如何从两个Listbox同时选择?

dir*_*ion 15 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()
Run Code Online (Sandbox Code Playgroud)

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

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

Jas*_*oon 31

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

从列表框小部件的pythonware概述:

默认情况下,选择将导出到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)
Run Code Online (Sandbox Code Playgroud)

tk小部件的权威文档基于Tcl语言而不是python,但很容易转换为python.该exportselection属性可在标准选项手册页上找到.


dir*_*ion 5

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