【发布时间】:2020-02-05 13:35:21
【问题描述】:
我有数据框,我正在使用 pandastable 来显示数据 gui,我想在我的 B 列中显示不同的颜色,如果 B 列有“X”作为值,则显示绿色单元格 x,否则如果“Y”值则显示显示红色单元格颜色。
我知道我们可以通过 table.setColorbyValue() 来做,但我没有得到 table.setColorbyValue() 的示例 你能告诉我如何使用 table.setColorbyValue()
import tkinter as tk
import pandas as pd
from pandastable import Table
# --- functions ---
def on_select(val):
if val == 'all':
pt.model.df = df
else:
pt.model.df = df[ df['TIME'] == val ]
# refresh/redraw table in window
pt.redraw()
# --- main ---
df = pd.DataFrame({
'TIME': ['00:00','00:00','01:00','01:00','02:00','02:00'],
'A': ['a','b','c','d','e','f'],
'B': ['x','x','y','y','z','z'],
})
root = tk.Tk()
# create frame for pandas table
table_frame = tk.Frame(root)
table_frame.pack()
# add pandastable do frame
pt = Table(table_frame, dataframe=df) # it can't be `root`, it has to be `frame`
pt.show()
values = ['all'] + list(df['TIME'].unique())
selected = tk.StringVar()
options = tk.OptionMenu(root, selected, *values, command=on_select)
options.pack()
root.mainloop()
【问题讨论】:
-
在my previous answer 中,您有示例如何使用它
setRowColors为此 - 它有效。如果您收到错误,请显示您的代码和完整的错误消息。 -
我试图理解setColorbyValue 的源代码,它似乎只适用于具有整数/浮点值的列,并且需要在使用
setColorbyValue()之前在列表pt.multiplecollist = [...]中设置这些列.另一个问题是将颜色分配给由函数pt.values_to_colors生成的值 - 所以你必须覆盖这个函数。一切似乎都太复杂了。
标签: python pandas user-interface tkinter