在同一个程序中使用多个Tkinter树视图样式



我似乎找不到这个问题的答案。我在我的程序中使用了几个Tkinter Treeviews。当我改变一个的风格时,它会改变所有的。我错过了什么?这是我写的代码,它重复了四次(其他颜色不同)

style = ttk.Style()
#style.theme_use("default")
style.configure("Treeview",background="Black", foreground="White",fieldbackground="red")
style.map('Treeview', background=[('selected','#3c3737')],foreground=[('selected','white')])
my_tree = ttk.Treeview(my_canvas2,height=1000)

您可以使用style.configure("<custom_name>.<widget_type>"...创建自定义小部件样式。如果你想创建一个自定义的树视图样式,则使用style.configure("MyCustom.Treeview"...)

然后,您将创建一个ttk小部件并将自定义小部件样式作为style参数传递,例如my_treeview = ttk.Treeview(master, style="MyCustom.Treeview")。下面是一个示例程序,它创建了两个不同的ttk.TreeView,具有不同的样式:
import tkinter
from tkinter import ttk
w = tkinter.Tk()
style = ttk.Style()
style.configure("Custom1.Treeview",background="Black", foreground="White",fieldbackground="red")
style.map('Custom1.Treeview', background=[('selected','#3c3737')],foreground=[('selected','white')])
style.configure("Custom2.Treeview",background="Greed", foreground="Purple",fieldbackground="pink")
style.map('Custom2.Treeview', background=[('selected','#3c3737')],foreground=[('selected','white')])
my_tree1 = ttk.Treeview(w, height=1000, style="Custom1.Treeview")
my_tree1.pack(side="left")
my_tree2 = ttk.Treeview(w, height=1000, style="Custom2.Treeview")
my_tree2.pack(side="right")
w.mainloop()

希望我能帮到你:

from tkinter import ttk, CENTER, EW
w = tkinter.Tk()
style_wear = ttk.Style()
style_wear.configure("fortree1.Treeview",background="yellow", foreground="black",fieldbackground="red")
style_wear.map('fortree1.Treeview', background=[('selected','green')],foreground=[('selected','black')])
tree02 = ttk.Treeview(w, column=("c1", "c2","c3",), show='headings', height=5,style="fortree2.Treeview")
tree02.column("# 1", anchor=CENTER, width=40)
tree02.heading("# 1", text="S/N")
tree02.column("# 2", anchor=CENTER, width=170)
tree02.heading("# 2", text="Nature of damage")
tree02.column("# 3", anchor=CENTER, width=65)
tree02.heading("# 3", text="Start")
tree02['show']='headings'
tree02.grid(row=1,column=0,columnspan=4,sticky=EW)
tree02.insert("", 'end', values=("a","a","a"))
tree02.insert("", 'end',values=("b","b","b",))
style_measurement = ttk.Style(w)
style_measurement.configure("fortree2.Treeview",background="Green", foreground="red",fieldbackground="pink")
style_measurement.map('fortree2.Treeview', background=[('selected','blue')],foreground=[('selected','white')])
tree1 = ttk.Treeview(w, show='headings', height=10,column=("c1", "c2","c3"),style="fortree1.Treeview")
tree1.column("# 1", anchor=CENTER, width=185)
tree1.heading("# 1", text="From the bottom tube")
tree1.column("# 2", anchor=CENTER, width=100)
tree1.heading("# 2", text="Original")
tree1.column("# 3", anchor=CENTER, width=100)
tree1.heading("# 3", text="Measured")
tree1.insert("", 'end',values=("a","a","a"))
tree1.insert("", 'end',values=("b","b","b"))
tree1['show']='headings'
tree1.grid(row=2,column=0,columnspan=3)
w.mainloop()```

最新更新