Tkinter ListBox结果获取及全局变量x仅返回最后值的问题
问题解决与方法说明
1. 变量x仅保留最后一个值的问题
你的xxx()函数里,每次外层循环都执行x=[],导致x被反复清空,最终只保留最后一次循环添加的手机号。修改方式如下:
把x的初始化移到外层循环之外,避免重复初始化:
def xxx(): global x x = [] # 只初始化一次空列表 n = ent1.get() if n.isnumeric(): n = int(n) for _ in range(n): phone_num = random_phone_num_generator() x.append(phone_num) print(x) lst1.insert(END, phone_num) # 直接插入手机号字符串,而非列表,避免ListBox显示格式异常
修改后,x会收集所有生成的手机号,save_file()函数就能遍历输出全部元素:
def save_file(): for num in x: print(num)
2. 获取Tkinter ListBox的结果值
ListBox的取值分几种场景:
- 获取所有元素:调用
get()方法,传入起始和结束索引(0到END表示全部)all_items = lst1.get(0, tk.END) # all_items是包含ListBox所有元素的列表 - 获取选中的单个元素(单选模式下):先通过
curselection()获取选中项的索引,再取值if lst1.curselection(): # 先判断是否有选中项 selected_item = lst1.get(lst1.curselection()[0]) - 获取所有选中的元素(多选模式下):遍历选中的索引列表,逐个取值
selected_items = [lst1.get(i) for i in lst1.curselection()]
内容的提问来源于stack exchange,提问作者sahlaoui Mustapha
相关产品推荐
相关产品推荐

