如何从两个Listbox中同时选择?

Posted

技术标签:

【中文标题】如何从两个Listbox中同时选择?【英文标题】:How to select at the same time from two Listbox? 【发布时间】:2010-10-19 21:23:04 【问题描述】:
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 窗口。但是,如果您想从两者中检索值,则会出现问题,因为一旦您在其中一个中选择了一个值,它就会取消选择您在另一个中选择的任何内容。

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

【问题讨论】:

【参考方案1】:

简短回答:将所有列表框小部件的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。 exportselection 属性可以在 standard options manual page 上找到。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于如何从两个Listbox中同时选择?的主要内容,如果未能解决你的问题,请参考以下文章

如何从ListBox.ItemTemplate DataTemplate内部调用Button命令来传递参数而不选择ListBox项?

如何将ListBox绑定到返回键以关闭窗口

从 Listbox 中一一选择项目

在C#如何实现从左边的listbox控件的内容移到右边的listbox控件

从数据表复制到 ListBox

VBA中如何使用ListBox控件呢?