我在单选模式下设置了 2 个单独的列表框。当我从 中选择一个项目时listboxA
,它会突出显示,但是当我从中选择一个项目时listboxB
,它会突出显示,并且来自 的项目listboxA
保持活动状态,但未突出显示。我怎样才能保持两者都突出显示?
问问题
10895 次
1 回答
47
简短回答:将exportselection
每个列表框的属性设置为False
Tkinter 起源于 X 窗口系统。X 有一个叫做“选择”的概念,它类似于系统剪贴板(更准确地说,剪贴板是“PRIMARY”选择)。默认情况下,一些 tkinter 小部件将它们的选择导出为 PRIMARY 选择。一个应用程序一次只能有一个 PRIMARY 选择,这就是当您在两个列表框之间单击时突出显示消失的原因。
exportselection
Tkinter 使您可以使用列表框(以及文本和条目小部件)的配置选项来控制此行为。将其设置为False
可防止将选择导出到 X 选择,从而允许小部件在不同的小部件获得焦点时保留其选择。
例如:
the_listbox = tk.Listbox(..., exportselection=False)
引用官方 tk 文档:
exportselection 指定小部件中的选择是否也应该是 X 选择。该值可以具有 Tcl_GetBoolean 接受的任何形式,例如 true、false、0、1、yes 或 no。如果选择已导出,则在小部件中选择会取消选择当前 X 选择,在小部件外部选择会取消选择任何小部件选择,并且小部件将在有选择时响应选择检索请求。默认值通常是小部件导出选择。
于 2012-04-06T22:39:21.843 回答