如何更改 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': ''}),
    #]})
    ],
})]
)