22
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带有两个列表框的窗口。但是,如果您想从两者中检索值,则会出现问题,因为一旦您在其中一个中选择了一个值,它就会取消选择您在另一个中选择的任何内容。

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

4

2 回答 2

44

简短的回答:将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)

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

于 2009-04-16T16:11:42.537 回答
8

exportselection=0定义列表框时似乎可以解决此问题。

于 2009-04-16T16:01:56.647 回答