在同一程序中使用多个 Tkinter Treeview 样式

Using Multiple Tkinter Treeview Styles in same program

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

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>"... 创建自定义小部件样式。所以,如果你想创建一个自定义的“Treevew”样式,你可以使用 style.configure("MyCustom.Treeview"...).

然后您将创建一个 ttk 小部件并将自定义小部件样式作为 style 参数传递,例如 my_treeview = ttk.Treeview(master, style="MyCustom.Treeview")。这是一个示例程序,它创建两个不同的 ttk.TreeViews,具有不同的样式:

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