Python ttk.Treeview根据单元格值设置单元格背景颜色

Python ttk.Treeview根据单元格值设置单元格背景颜色,python,tkinter,ttk,Python,Tkinter,Ttk,我想定制一个ttk.Treeview,以便根据单元格的值设置单元格背景颜色。这是我的MWE,以树状视图作为表格: try: import Tkinter as Tk from Tkinter import ttk except ModuleNotFoundError: import tkinter as Tk from tkinter import ttk if __name__ == '__main__': root = Tk.Tk() fra

我想定制一个ttk.Treeview,以便根据单元格的值设置单元格背景颜色。这是我的MWE,以树状视图作为表格:

try:
    import Tkinter as Tk
    from Tkinter import ttk
except ModuleNotFoundError:
    import tkinter as Tk
    from tkinter import ttk

if __name__ == '__main__':
    root = Tk.Tk()
    frame = Tk.Frame(root)

    tree = ttk.Treeview(frame.master, columns=("Name", "Hex Code"), show="headings")
    tree.heading('Name', text="Name")
    tree.heading('Hex Code', text="Hex Code")

    tree.pack()

    tree.insert('', 'end', values=("red","#ff0000"))
    tree.insert('', 'end', values=("green","#00ff00"))
    tree.insert('', 'end', values=("pink","#ff1493"))
    tree.insert('', 'end', values=("teal","#00cece"))

    root.mainloop()
最后应该是这样的(文本后面没有白色背景):


提前谢谢

我不能完全按照您的意愿进行操作,因为您只需配置一行,如下所示:

try:
    import Tkinter as Tk
    from Tkinter import ttk
except ModuleNotFoundError:
    import tkinter as Tk
    from tkinter import ttk

if __name__ == '__main__':
    root = Tk.Tk()
    frame = Tk.Frame(root)

    tree = ttk.Treeview(frame.master, columns=("Name", "Hex Code"), show="headings")
    tree.heading('Name', text="Name")
    tree.heading('Hex Code', text="Hex Code")

    tree.pack()
    dct = {"red":"#ff0000",
           "green":"#00ff00",
           "pink":"#ff1493",
           "teal":"#00cece"}

    for key, value in dct.items():
        tree.insert("", "end",tag=key, values=(key,value))
        tree.tag_configure(tagname=key, background=value)
        

    root.mainloop()

据我所知,要做到这一点,唯一的方法是创建一个画布并对其进行一些处理。

您可能需要使用标记:您不能在树视图中为特定单元格着色,只能对整行进行着色。谢谢。我可以把整排都涂上颜色。但是,您的示例使用标记,如果我想让用户在运行时选择任意颜色,我是否仍然能够设置行的颜色?您是否考虑在单击项目后为行着色?我考虑在编辑或添加项目时为行着色,并且行颜色应为十六进制代码值的颜色。是的,您可以编辑它们。在tag_行中,configure“key”和“value”与dict中存储的字符串相同。您只需复制该行并用新字符串编辑它们。您只需删除旧标记,以避免重复标记。