如何在 tkinter.ttk Treeview 上完全更改背景颜色

Posted

技术标签:

【中文标题】如何在 tkinter.ttk Treeview 上完全更改背景颜色【英文标题】:How to fully change the background color on a tkinter.ttk Treeview 【发布时间】:2017-10-04 15:25:51 【问题描述】:

我一直在尝试为我最近使用 tkinter 在 python 3.4.4 中开发的一个项目制作目录浏览器。我不希望背景成为默认颜色,所以我已经着手更改大多数小部件的背景。在我到达 Treeview 之前,我没有遇到任何麻烦。我不太擅长 ttk.Style(),但我仍然设法得到了

ttk.Style().configure("Treeview", background="black",
                foreground="white")

工作,但这只会改变小部件中包含的区域的背景。

我检查了是否是调整大小的问题,但一切似乎都正常。我还在网上寻找了类似的问题,以为我做错了,发现两个链接指向 Bryan Oakley 在 2007 年遇到了同样的问题。

Bryan Oakley Re: how to get a ttk::treeview with no border

how to create a ttk::treeview without a border?

基本上,结论是这是在 Windows 上运行时的错误。因此,我留下了 3 个一般性问题:

我只是完全遗漏了一些明显的东西并误解了这些帖子(在这里交叉手指),如果是这样,我做错了什么?或者如果这真的是一个错误,那么自 2007 年以来是否有任何解决方案?最后,如果没有任何解决方案,是否有人找到了解决该问题的方法,无论解决方案多么老套?

【问题讨论】:

你试过style.configure("Treeview", fieldbackground="black")吗? 我现在刚试了,好像没有效果 我认为它与您使用的 ttk 主题有关,它应该与主题“蛤”(style.them_use("clam"))一起使用。 就是 j_4321。非常感谢! (如果您在 cmets 之外将其作为完整的答案提交,我很乐意接受您的回答。也感谢 Yahli 先生的帮助 【参考方案1】:

改用此代码:

ttk.Style().configure("Treeview", background="black", 
foreground="white", fieldbackground="black")

希望对你有所帮助,

雅丽。

【讨论】:

它不适用于每个 ttk 主题,“vista”和“xpnative”似乎不支持“fieldbackground”选项。【参考方案2】:

要使 Treeview 的背景完全变黑,Treeview 样式的 backgroundfieldbackground 选项都需要设置为黑色。

此外,并非所有 ttk 主题都支持 fieldbackground 选项,例如“xpnative”和“vista”主题。

代码:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

style = ttk.Style(root)
# set ttk theme to "clam" which support the fieldbackground option
style.theme_use("clam")
style.configure("Treeview", background="black", 
                fieldbackground="black", foreground="white")

tree = ttk.Treeview(root)
tree.insert("", 0, "item", text="item")
tree.pack()

root.mainloop()

【讨论】:

clam 的问题是将行紧紧地挤在一起。 style 的问题通常是它影响了我所有现有的树视图,而不仅仅是我想为其设置颜色的树视图。积极的副作用:人口稀少的树形视图缩小了框架以消除空白。 @WinEunuuchs2Unix "clam" 样式将应用于所有ttk 小部件,但如果您不希望所有树视图都有黑色背景,您可以配置"black.Treeview" 而不是"Treeview" 并为您想要的黑色背景树执行 tree.configure(style="black.Treeview") 像魅力一样工作。非常感谢。

以上是关于如何在 tkinter.ttk Treeview 上完全更改背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

python 3 - tkinter - ttk treeview:查看列文本

tkinter ttk treeview 如何设置固定宽度?为啥它会随着列数而变化?

强制 Tkinter.ttk Treeview 小部件在缩小其列宽后调整大小

在 tkinter ttk treeview 中格式化单个单元格/项目而不是整行

tkinter学习01

插入带标签的行时出现Tkinter Treeview问题