我的ttk树视图的选定行显示为深蓝色背景,文本为白色.
如果我使用标记设置行的颜色,例如:
self.tree.item(item, tags=('oddrow'))
并将标记配置为颜色,例如:
self.tree.tag_configure('oddrow', background='lightgrey')
并选择奇数,当文本从黑色变为白色时,背景颜色不会改变(它仍然是浅灰色).如何将所选行背景设为深蓝色,无论该行是否标有颜色?
未标记的行在白色上显示为黑色,或在深蓝色时选择为白色.
我试过了
ttk.Style().configure('Treeview', selectbackground='blue')
但那没有做任何事情.
编辑:我想,当我选择一个项目时,我可以将其重新标记为不是奇怪的,然后在未选中时返回,但这是相当不优雅的.
解决方法:
从TkDocs tutorial到树木,似乎你可以:
>创建具有所需颜色的标记(对于选定的行)
然后,从树视图中捕获虚拟事件:
>在获得焦点时将标记分配给行
>当焦点失去焦点时,从行中取消分配标签
这是我使用的文档中的特定段落:
The treeview will generate virtual events "<TreeviewSelect>", "<TreeviewOpen>"
and "<TreeviewClose>" which allow you to monitor changes to the widget made
by the user. You can use the "selection" method to determine the current
selection (the selection can also be changed from your program).
以及教程中的一些代码:
tree.tag_configure('ttk', background='yellow')
tree.tag_bind('ttk', '<1>', itemClicked); # the item clicked can be found via tree.focus()
注意:我不确定这是否有效.我将不得不挖掘代码来看看我做了什么.