Tkinter UI 简记——Listbox之多选功能以及 报错类型:bad listbox index "0 2"

 

在使用tkinter设计UI界面过程中,用到了Listbox的多选功能,即 selectmode = MULTIPLE的情况。

现在界面如下,希望能够获取多个选中的文本。

                                    Tkinter UI 简记——Listbox之多选功能以及 报错类型:bad listbox index "0 2"

在查Listbox用法时,一般都会找到获取当前选中值的用法,如

    print(mylb.get(mylb.curselection()))

其中,mylb就是自己定义的列表,用get() 和curselection() 方法获取当前选中行。在只有一个选中的时候没有问题。

                                               Tkinter UI 简记——Listbox之多选功能以及 报错类型:bad listbox index "0 2"

我选中第一行,把它打印出来,我点击按钮两次,没有问题

                     Tkinter UI 简记——Listbox之多选功能以及 报错类型:bad listbox index "0 2"

而选中两个或者多个是执行上面的print语句,会报错

                                              Tkinter UI 简记——Listbox之多选功能以及 报错类型:bad listbox index "0 2" 

 

                                Tkinter UI 简记——Listbox之多选功能以及 报错类型:bad listbox index "0 2"

上述报错的意思是:很差的索引“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))

之后即可正常运行

                              Tkinter UI 简记——Listbox之多选功能以及 报错类型:bad listbox index "0 2"

相关文章: