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

tri*_*957 3 python treeview tkinter ttk

即使我的树视图有选项takefocue=False,单元格中的文本仍然以某种方式获得焦点。具体来说,当我这样做时,文本列tree.insert('', tk.END, text='Some Text', values=5)正在获得焦点,这意味着 周围有一条虚线Some Text。我能够找到此资源,但我不确定需要更改的布局字符串。

Jos*_*lin 5

根据Tcl/Tk wiki,可以使用以下 5 种样式来自定义ttk.Treeview()小部件:

"Treeview"
"Treeview.Heading"
"Treeview.Row"
"Treeview.Cell"
"Treeview.Item"
Run Code Online (Sandbox Code Playgroud)

使用.layout(),您可以检索每种样式的布局规范:

style = ttk.Style()
style.layout("Treeview.Item") 
Run Code Online (Sandbox Code Playgroud)

原来"Treeview.Item"样式有"Treeitem.focus"布局标记。如果在覆盖布局时将其注释掉,焦点绘制行为(和虚线)将消失:

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': ''}),
    #]})
    ],
})]
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 哇,这正是我正在寻找的。非常感谢! (2认同)