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

如何基于TYPE列值为Pandastable中的行设置对应颜色?

Pandastable按TYPE列设置行颜色实现方案

我是Pandastable新手,想要根据表格中TYPE列的数值为行设置不同颜色:

  • W 对应黄色行
  • E 对应红色行
  • I 对应蓝色行

现有代码如下:

def ElogsOpen ():
    #function to strip logs and create a csv file
    elogstrip()
    # window off root parameters
    win = Toplevel(root)
    win.title('Elogs')
    win.geometry ( '1920x1080') 
    win.state('zoomed')
    win.resizable=False
    #File path where CSV was stored when generated
    filepath= folderbtn+'\elogs.csv'
    #Code to display Pandastable from CSV
    class TestApp(tk.Frame):
        def __init__(self, parent, filepath):
            super().__init__(parent)
            self.table = Table(self, showtoolbar=True, showstatusbar=True)
            self.table.importCSV(filepath)
            self.table.autoResizeColumns()
            self.table.show()
    app = TestApp(win, filepath)
    app.pack(fill=tk.BOTH, expand=1)

实现步骤

  1. 自定义带颜色规则的表格类
    重写Pandastable自带的getRowColors方法,这个方法会在每行渲染时被调用,我们可以在这里根据TYPE列的值返回对应颜色。

  2. 建立TYPE与颜色的映射
    用字典存储颜色规则,方便快速匹配,也可以用RGB十六进制值来精准控制颜色深浅。

  3. 替换原有Table类
    在TestApp中使用自定义的表格类替代默认的Table类,让颜色规则生效。

修改后的完整代码

import tkinter as tk
from tkinter import Toplevel
from pandastable import Table

def ElogsOpen ():
    elogstrip()
    win = Toplevel(root)
    win.title('Elogs')
    win.geometry('1920x1080') 
    win.state('zoomed')
    win.resizable=False
    filepath= folderbtn+'\elogs.csv'

    # 自定义带行颜色规则的表格类
    class ColoredTable(Table):
        def getRowColors(self, row):
            # 获取当前行TYPE列的值
            type_val = self.model.getValueAt(row, self.model.getColIndex('TYPE'))
            # 颜色映射规则,可替换为RGB值比如'#FFFACD'(浅黄)
            color_map = {
                'W': 'yellow',
                'E': 'red',
                'I': 'blue'
            }
            # 匹配不到时返回默认白色
            return color_map.get(type_val, 'white')

    class TestApp(tk.Frame):
        def __init__(self, parent, filepath):
            super().__init__(parent)
            # 使用自定义表格类
            self.table = ColoredTable(self, showtoolbar=True, showstatusbar=True)
            self.table.importCSV(filepath)
            self.table.autoResizeColumns()
            self.table.show()

    app = TestApp(win, filepath)
    app.pack(fill=tk.BOTH, expand=1)

注意事项

  • 确保CSV中TYPE列的名称和代码里的'TYPE'完全一致(包括大小写),否则会匹配不到颜色。
  • 如果表格数据更新后颜色没同步,可调用self.table.redraw()方法重新渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:21:37