如何更改 tkinter ttk.Treeview 单元格的焦点样式
How to change the focus styling of a tkinter ttk.Treeview cell
即使我的 Treeview 有选项 takefocue=False
,单元格中的文本仍然以某种方式获得焦点。具体来说,当我执行 tree.insert('', tk.END, text='Some Text', values=5)
时,文本列正在聚焦,这意味着 Some Text
周围有一条虚线。我能够找到这个 resource,但我不确定我需要更改的布局字符串。
根据 Tcl/Tk wiki,可以使用以下 5 种样式来自定义 ttk.Treeview()
小部件:
"Treeview"
"Treeview.Heading"
"Treeview.Row"
"Treeview.Cell"
"Treeview.Item"
使用.layout()
,您可以检索每个样式的布局规范:
style = ttk.Style()
style.layout("Treeview.Item")
原来"Treeview.Item"
样式有一个"Treeitem.focus"
布局标记。如果您 comment it out 在覆盖布局时,焦点绘制行为(和虚线)将消失:
style = ttk.Style()
style.layout("Treeview.Item",
[('Treeitem.padding', {'sticky': 'nswe', 'children':
[('Treeitem.indicator', {'side': 'left', 'sticky': ''}),
('Treeitem.image', {'side': 'left', 'sticky': ''}),
#('Treeitem.focus', {'side': 'left', 'sticky': '', 'children': [
('Treeitem.text', {'side': 'left', 'sticky': ''}),
#]})
],
})]
)
即使我的 Treeview 有选项 takefocue=False
,单元格中的文本仍然以某种方式获得焦点。具体来说,当我执行 tree.insert('', tk.END, text='Some Text', values=5)
时,文本列正在聚焦,这意味着 Some Text
周围有一条虚线。我能够找到这个 resource,但我不确定我需要更改的布局字符串。
根据 Tcl/Tk wiki,可以使用以下 5 种样式来自定义 ttk.Treeview()
小部件:
"Treeview"
"Treeview.Heading"
"Treeview.Row"
"Treeview.Cell"
"Treeview.Item"
使用.layout()
,您可以检索每个样式的布局规范:
style = ttk.Style()
style.layout("Treeview.Item")
原来"Treeview.Item"
样式有一个"Treeitem.focus"
布局标记。如果您 comment it out 在覆盖布局时,焦点绘制行为(和虚线)将消失:
style = ttk.Style()
style.layout("Treeview.Item",
[('Treeitem.padding', {'sticky': 'nswe', 'children':
[('Treeitem.indicator', {'side': 'left', 'sticky': ''}),
('Treeitem.image', {'side': 'left', 'sticky': ''}),
#('Treeitem.focus', {'side': 'left', 'sticky': '', 'children': [
('Treeitem.text', {'side': 'left', 'sticky': ''}),
#]})
],
})]
)