How to change the background color of a Treeview

11,629

Solution 1

The missing option is fieldbackground which I only found by accident in an example. So if you add it to the style declaration

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

it works as you'd like. I used red to make the change very visible; obviously you'll want to change that for greater color harmony.

Solution 2

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')
Share:
11,629
user2650746
Author by

user2650746

Updated on July 19, 2022

Comments

  • user2650746
    user2650746 almost 2 years

    I'm here to ask you how to change background of a treeview, I tried that

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

    It's work perfectly just for the cell, but the rest of the Treeview stay white.

    I tried to change the background of the window, the frame too, but it does not work.

    So, how to do that, i'm sure that you know.

    Bye and thanks in advance :)

    The code

    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()