如何在Tkinter的pandastable组件中将负数设置为红色显示
pandastable负数显示为红色实现方案
实现思路:通过继承pandastable的Table类,重写drawCell方法实现单元格数值判断和颜色自定义,不需要修改源码,对原有逻辑侵入性极低。
修改后完整可运行代码如下:
import pandastable as pt import tkinter as tk import pandas as pd # 自定义Table类,重写单元格绘制方法 class CustomTable(pt.Table): def drawCell(self, row, col, text, fg=None, bg=None, align='w'): # 判断当前单元格内容是否为负数值 try: val = float(text) if val < 0: # 负数将前景色设置为红色 fg = 'red' except (ValueError, TypeError): # 非数值类型保持默认文本颜色 pass # 调用原有绘制逻辑完成渲染 super().drawCell(row, col, text, fg=fg, bg=bg, align=align) window = tk.Tk() frame1 = tk.Frame(window) frame1.grid(row=0, column=0) d = {'col1':[1, 2, -3, 4, 5, 5], 'col2':[1, -0.5, -1, 4, 2, -2] ,'col3': [-0.345, 1, 2, 3, 3, 4]} df = pd.DataFrame(data=d) # 替换为自定义的CustomTable实例,原有配置参数保持不变 pt = CustomTable(frame1, dataframe = df, width=300, height=300, rows=8, cols=8) pt.show() window.mainloop()
运行后表格内所有负数值都会自动显示为红色,原有其他功能和样式不受影响。如果需要调整红色深浅,可将代码中的red替换为对应的十六进制颜色值即可。
内容的提问来源于stack exchange,提问作者mattia_fiore
相关产品推荐
相关产品推荐

