tkinter TreeView:禁用选择突出显示
tkinter TreeView: disable selection highlight
我有一个 tkinter TreeView 并使用标签标记多个 selected 项目,如下面黄色所示。不幸的是,无论标签如何,最后单击的项目将始终显示为蓝色。如何防止 TreeView 为最后单击的项目着色?
这是我用于 select 项的代码片段:
def on_click(self, event):
"""Set tag for selected datasets."""
# Remove 'plotted' tag if existent
if 'plotted' in self.tree.item(self.tree.selection())['tags']:
# FIXME: Only remove tag 'plotted'
self.tree.item(self.tree.selection(), tags=())
# Select only items that have no children
elif not self.tree.get_children(self.tree.selection()):
self.tree.item(self.tree.selection(), tags='plotted')
self.tree.column('#0', anchor=tk.E)
这是一个示例。请注意,您无法判断 DNTP_iDL_... 是否应该是白色的(b/c 它是黄色的,我单击它以将其停用):
原来我在为多个项目使用标签时走错了路select。
只需使用内置的 selection(使用 shift- 或 cmd-select)然后
mytree.selection()
获取所有 selected 项目的列表。
我知道这是旧的,但我没有找到真正的答案。
经过一些挖掘 - 有可能(不明显但可能):
显然,treeview 有单独的颜色系统 - 通过样式和通过标签(使用 tree.tag_bind 更动态地添加基本时尚的东西)。但是,我的测试表明,如果您单击该项目(此问题的主要问题),标签将无法在框中使用。
这是我想出的解决方案:
root = tk.Tk()
style = ttk.Style(root)
style.theme_use("clam")
style.map("Treeview",
background=[
('selected', '!focus', 'yellow'),
])
# here is your treeview widgets and stuff
root.mainloop()
可能有更优雅的解决方案...但我没有找到。
希望对大家有所帮助!
更新
我发现当您单击该项目然后转到另一个应用程序 (alt+Tab) - 您会看到黄色选择。
我已经通过将背景参数更改为:
解决了这个问题
# ('selected', '!focus', 'yellow'),
('selected', 'invalid', 'yellow'),
我有一个 tkinter TreeView 并使用标签标记多个 selected 项目,如下面黄色所示。不幸的是,无论标签如何,最后单击的项目将始终显示为蓝色。如何防止 TreeView 为最后单击的项目着色?
这是我用于 select 项的代码片段:
def on_click(self, event):
"""Set tag for selected datasets."""
# Remove 'plotted' tag if existent
if 'plotted' in self.tree.item(self.tree.selection())['tags']:
# FIXME: Only remove tag 'plotted'
self.tree.item(self.tree.selection(), tags=())
# Select only items that have no children
elif not self.tree.get_children(self.tree.selection()):
self.tree.item(self.tree.selection(), tags='plotted')
self.tree.column('#0', anchor=tk.E)
这是一个示例。请注意,您无法判断 DNTP_iDL_... 是否应该是白色的(b/c 它是黄色的,我单击它以将其停用):
原来我在为多个项目使用标签时走错了路select。
只需使用内置的 selection(使用 shift- 或 cmd-select)然后
mytree.selection()
获取所有 selected 项目的列表。
我知道这是旧的,但我没有找到真正的答案。
经过一些挖掘 - 有可能(不明显但可能):
显然,treeview 有单独的颜色系统 - 通过样式和通过标签(使用 tree.tag_bind 更动态地添加基本时尚的东西)。但是,我的测试表明,如果您单击该项目(此问题的主要问题),标签将无法在框中使用。
这是我想出的解决方案:
root = tk.Tk()
style = ttk.Style(root)
style.theme_use("clam")
style.map("Treeview",
background=[
('selected', '!focus', 'yellow'),
])
# here is your treeview widgets and stuff
root.mainloop()
可能有更优雅的解决方案...但我没有找到。
希望对大家有所帮助!
更新
我发现当您单击该项目然后转到另一个应用程序 (alt+Tab) - 您会看到黄色选择。
我已经通过将背景参数更改为:
解决了这个问题# ('selected', '!focus', 'yellow'),
('selected', 'invalid', 'yellow'),