【问题标题】:ttk.Treeview set cell background color based on cell valuettk.Treeview 根据单元格值设置单元格背景颜色
【发布时间】:2020-06-30 12:51:27
【问题描述】:

我想自定义一个 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()

最后它应该看起来像这样(文本后面没有白色背景):

提前致谢!

【问题讨论】:

标签: python tkinter ttk


【解决方案1】:

我不能完全按照你的意愿去做,因为你可以像这样配置一行:

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
猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
相关资源
最近更新 更多