如何获取Tkinter中Listbox的全部条目并解决仅显示最后一条的问题
问题解决方法
核心错误原因
- 循环内每次创建Label时都覆盖了
receipt变量,仅保留了最后一个条目对应的Label实例 - 仅在循环结束后调用了一次
pack(),只有最后一个Label会被渲染到窗口中
修正后的代码
get_content = listbox2.get(0, END) bb = Label(receipt_window, text = "Pizzeria") line1 = Label(receipt_window, text = "----------------------------------------------------------------") # 先打包固定表头 bb.pack() line1.pack() # 循环内每生成一个条目Label就立即打包 for con_item in get_content: con = con_item.split('PHP') con1 = con[0] con2 = con[1] rec_content = f'{con1:<40}costs PHP{con2:<8}' receipt_item = Label(receipt_window, text = rec_content) receipt_item.pack()
补充优化建议
如果需要把所有条目统一存到变量里后续使用,可以在循环外定义列表存储所有格式化后的内容:
# 存储所有格式化后的条目,可随时调用 all_rec_items = [] for con_item in get_content: con = con_item.split('PHP') con1 = con[0] con2 = con[1] rec_content = f'{con1:<40}costs PHP{con2:<8}' all_rec_items.append(rec_content) receipt_item = Label(receipt_window, text = rec_content) receipt_item.pack() # 示例:打印所有条目到控制台 print(all_rec_items)
内容的提问来源于stack exchange,提问作者Zven Reyes
相关产品推荐
相关产品推荐

