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
窗口。但是如果要从两者中检索值,则会出现问题,因为只要在一个值中选择一个值,它就会取消选择在另一个中选择的值。
这只是开发人员必须忍受的限制吗?
答案 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
在定义列表框时似乎会解决这个问题。