28

我在单选模式下设置了 2 个单独的列表框。当我从 中选择一个项目时listboxA,它会突出显示,但是当我从中选择一个项目时listboxB,它会突出显示,并且来自 的项目listboxA保持活动状态,但未突出显示。我怎样才能保持两者都突出显示?

4

1 回答 1

47

简短回答:将exportselection每个列表框的属性设置为False

Tkinter 起源于 X 窗口系统。X 有一个叫做“选择”的概念,它类似于系统剪贴板(更准确地说,剪贴板是“PRIMARY”选择)。默认情况下,一些 tkinter 小部件将它们的选择导出为 PRIMARY 选择。一个应用程序一次只能有一个 PRIMARY 选择,这就是当您在两个列表框之间单击时突出显示消失的原因。

exportselectionTkinter 使您可以使用列表框(以及文本和条目小部件)的配置选项来控制此行为。将其设置为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 回答