如何从两个Listbox同时选择?

时间:2009-04-16 15:24:17

标签: python listbox tkinter

from Tkinter import *


master = Tk()

listbox = Listbox(master)
listbox.pack()
listbox.insert(END, "a list entry")

for item in ["one", "two", "three", "four"]:
    listbox.insert(END, item)

listbox2 = Listbox(master)
listbox2.pack()
listbox2.insert(END, "a list entry")

for item in ["one", "two", "three", "four"]:
    listbox2.insert(END, item)

master.mainloop()

上面的代码创建了一个带有两个列表框的tkinter窗口。但是如果要从两者中检索值,则会出现问题,因为只要在一个值中选择一个值,它就会取消选择在另一个中选择的值。

这只是开发人员必须忍受的限制吗?

2 个答案:

答案 0 :(得分:31)

简答:将所有列表框小部件的exportselection属性值设置为False或零。

从列表框小部件的a pythonware overview开始:

  

默认情况下,将导出选择   到X选择机制。如果你   有多个列表框   屏幕,这真的搞砸了   对于穷人用户。如果他选择   在一个列表框中的东西,然后   选择另一个东西,   原始选择被清除。它是   通常一个好主意禁用它   在这种情况下的机制。在里面   以下示例中,有三个列表框   在同一个对话框中使用:

b1 = Listbox(exportselection=0)
for item in families:
    b1.insert(END, item)

b2 = Listbox(exportselection=0)
for item in fonts:
    b2.insert(END, item)

b3 = Listbox(exportselection=0)
for item in styles:
    b3.insert(END, item)

tk小部件的权威文档基于Tcl语言而不是python,但很容易转换为python。可以在standard options manual page上找到exportselection属性。

答案 1 :(得分:5)

exportselection=0在定义列表框时似乎会解决这个问题。