Tkinter UI 简记——Listbox之多选功能以及 报错类型:bad listbox index "0 2"
在使用tkinter设计UI界面过程中,用到了Listbox的多选功能,即 selectmode = MULTIPLE的情况。
现在界面如下,希望能够获取多个选中的文本。
在查Listbox用法时,一般都会找到获取当前选中值的用法,如
print(mylb.get(mylb.curselection()))
其中,mylb就是自己定义的列表,用get() 和curselection() 方法获取当前选中行。在只有一个选中的时候没有问题。
我选中第一行,把它打印出来,我点击按钮两次,没有问题
而选中两个或者多个是执行上面的print语句,会报错
上述报错的意思是:很差的索引“0 1”。因为mylb.curselection() 返回的是选中的行的索引,也就是第0行,第2行。mylb.get(index)方法有一个参数,传进去的是索引,必须是 active, anchor, end, @x,y, or a number 。一次必须并且只能传进去一个值。
做如下修改:
index_list = self.lb_char6.curselection()
print("选中:")
for i,id in enumerate(index_list):
print(self.lb_char6.get(id))
之后即可正常运行