我想自定义ttk.Treeview,以便根据单元格中的值设置单元格背景色。这是我的MWE,其中有一个Treeview作为表格:
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中的字符串相同。您只需要复制该行并使用新字符串对其进行编辑。您只应删除旧标签,以避免重复标签。 tcl.tk/man/tcl8.6/TkCmd/ttk_treeview.htm#M59