6

我在这里问你如何更改树视图的背景,我试过了

ttk.Style().configure("Treeview", background="#383838")

它仅适用于单元格,但 Treeview 的其余部分保持白色。

我试图改变窗口的背景,也改变了框架,但它不起作用。

那么,如何做到这一点,我相信你知道。

再见并提前感谢:)

编码

from tkinter import *
from tkinter import ttk

p=Tk()

separator = PanedWindow(p,bd=0,bg="#202322",sashwidth=2)

separator.pack(fill=BOTH, expand=1)

_frame = Frame(p,bg="#383838")

t=ttk.Treeview(_frame)

t["columns"]=("first","second")
t.column("first",anchor="center" )
t.column("second")
t.heading("first",text="first column")
t.heading("second",text="second column")
t.insert("",0,"dir1",text="directory 1")
t.insert("dir1","end","dir 1",text="file 1 1",values=("file 1 A","file 1 B"))
id=t.insert("","end","dir2",text="directory 2")
t.insert("dir2","end",text="dir 2",values=("file 2 A","file 2 B"))
t.insert(id,"end",text="dir 3",values=("val 1 ","val 2"))
t.insert("",0,text="first line",values=("first line 1","first line 2"))
t.tag_configure("ttk",foreground="black")

ysb = ttk.Scrollbar(orient=VERTICAL, command= t.yview)
xsb = ttk.Scrollbar(orient=HORIZONTAL, command= t.xview)
t['yscroll'] = ysb.set
t['xscroll'] = xsb.set

ttk.Style().configure("Treeview", background="#383838",foreground="white")
p.configure(background='black')

t.grid(in_=_frame, row=0, column=0, sticky=NSEW)
ysb.grid(in_=_frame, row=0, column=1, sticky=NS)
xsb.grid(in_=_frame, row=1, column=0, sticky=EW)
_frame.rowconfigure(0, weight=1)
_frame.columnconfigure(0, weight=1)

separator.add(_frame)

w = Text(separator)
separator.add(w)

p.mainloop()
4

3 回答 3

3

缺少的选项是我在一个示例中fieldbackground偶然发现的。因此,如果将其添加到样式声明中

ttk.Style().configure("Treeview", background="#383838", 
 foreground="white", fieldbackground="red")

它可以按您的意愿工作。我过去常常red使变化非常明显;显然你会想要改变它以获得更大的色彩和谐。

于 2013-08-05T11:50:59.900 回答
1
if flag == False:
    tree.insert('', 'end', values=(valx[0], valx[1], valx[2], valx[3]),tags=('odd',))
else:
    tree.insert('', 'end', values=(valx[0], valx[1], valx[2], valx[3]),tags=('even',))

tree.tag_configure('odd', background='#008001')
tree.tag_configure('even', background='#FFFF00')
于 2020-09-23T11:43:16.717 回答
0

如果@msw建议的答案对您不起作用,这是一个可能的解决方案。

对于那些即使在配置样式和/或标签后也无法看到树视图着色方面的任何变化的人,请参考此视频:Youtube 链接

轻松修复:@Durai本文的评论中找到

添加此行以在您的代码中编辑地图配置:

# set backgound and foreground color when selected
style.map('Treeview', background=[('selected', '#BFBFBF'), foreground=[('selected', 'black')])

另一种硬编码方式:

ttk 的主题文件位于 C:/<Python 安装文件夹>/tcl/tk8.6/ttk/

vistaTheme.tcl 是 ttk 使用的默认主题。

您需要将以下代码更改/添加到 Treeview(文件结尾)下的主题文件中才能使其工作:

ttk::style map Treeview \
        -background {disabled $colors(-frame)\
                        selected lightblue\
                        selected $colors(-selectbg)} \
        -foreground {disabled $colors(-disabledfg)\
                        selected black\
                        selected $colors(-selectfg)}

就我而言,我在主题文件中缺少这些行,所以我将它们添加到 Treeview 下面,然后运行我的代码,我终于可以在我的 Treeview 上看到颜色

于 2021-09-02T15:43:00.963 回答