You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何修改ttk Treeview组件中指定单元格的颜色

ttk.Treeview指定单元格自定义颜色实现方案

ttk.Treeview本身支持通过tag(标签)机制实现单元格/行的自定义样式配置,你只需要对原有代码的show_table函数做少量修改即可实现需求,具体操作如下:

实现步骤

  1. 定义样式标签:插入数据前先通过tag_configure方法创建自定义样式标签,配置背景色、字体颜色等参数
  2. 给指定单元格绑定标签:插入每行数据时拿到该行的唯一id,通过tag_add方法给目标单元格绑定提前定义好的样式标签即可

修改后完整可运行代码

import tkinter as tk
from tkinter import *
from tkinter import ttk

def show_table():
    text = "".join([letter for letter in textDate.get() if letter != '/'])
    print(text)
    number_array = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
    frn = Frame(root)
    frn.place(x=15, y=140)
    tv = ttk.Treeview(frn, columns=(1, 2, 3), show="headings", height="5")
    tv.pack()

    # 自定义样式标签,可按需创建多个不同样式
    tv.tag_configure('red_bg', background='red', foreground='white')  # 红底白字
    tv.tag_configure('bold_yellow', foreground='yellow', font=('微软雅黑', 10, 'bold'))  # 黄色粗体
    tv.tag_configure('light_blue', background='#CCEEFF')  # 浅蓝背景

    for row_idx, row_data in enumerate(number_array):
        # 插入行时拿到该行的唯一id
        row_iid = tv.insert('', 'end', values=row_data)
        # 示例:第一行(索引0)第二列(列id为2)设为红底白字
        if row_idx == 0:
            tv.tag_add('red_bg', row_iid, column=2)
        # 示例:第三行(索引2)第三列(列id为3)设为黄色粗体
        if row_idx == 2:
            tv.tag_add('bold_yellow', row_iid, column=3)
        # 示例:所有行的第一列都设为浅蓝背景
        tv.tag_add('light_blue', row_iid, column=1)

def save_data():
    date = textDate.get()
    show_table()

root = tk.Tk()
canvas = tk.Canvas(root, height=700, width=700, bg="#A2A2A2")
root.title("test")
canvas.pack()
datelable = tk.Label(text="date", bg="#A2A2A2")
datelable.place(x=15, y=50)
textDate = tk.StringVar()
textEntry = tk.Entry(textvariable=textDate)
textEntry.place(x=15, y=70, width=100, height=15)
finishButton = tk.Button(root, text="send", width="10", height="1", bg="#FFFFFF", command=save_data)
finishButton.place(x=15, y=100)
frame = tk.Frame(root)
root.mainloop()

自定义调整说明

  • 你可以根据自己的业务规则设置tag_add的触发条件,比如单元格数值大于5时加红底标签、等于指定值时加特殊样式标签等
  • 样式标签支持的配置参数除了background(背景色)、foreground(字体色)、font(字体)外,还可以设置borderwidth(边框宽度)、relief(边框样式)等属性
  • 如果不给tag_add方法传column参数,样式会默认应用到整行

内容的提问来源于stack exchange,提问作者roee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:09:12