Python ttk.Treeview根据单元格值设置单元格背景颜色
我想定制一个ttk.Treeview,以便根据单元格的值设置单元格背景颜色。这是我的MWE,以树状视图作为表格: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
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中存储的字符串相同。您只需复制该行并用新字符串编辑它们。您只需删除旧标记,以避免重复标记。