如何更改tkinter ttk.Treeview单元格的焦点样式

时间:2017-07-18 16:15:13

标签: python tkinter treeview ttk

即使我的Treeview有选项takefocue=False,单元格中的文本仍然以某种方式聚焦。特别是我tree.insert('', tk.END, text='Some Text', values=5)时的文本列正在关注焦点,这意味着Some Text周围有一条虚线。我能够找到这个resource,但我不确定我需要更改的布局字符串。

1 个答案:

答案 0 :(得分:2)

根据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': ''}),
    #]})
    ],
})]
)

enter image description here