SET Цвет ячейки одного столбца в зависимости от значения ячейки столбца. Пример pandastable - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть фрейм данных, и я использую 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()

1 Ответ

1 голос
/ 05 февраля 2020

Пример с setColorByValue(), но я думаю, что эта функция не будет так полезна, как вы ожидаете. Честно говоря, я не понимаю, почему эта функция существует.


Необходимо указать, какие столбцы нужно раскрасить, а затем запустить setColorbyValue(), но столбцам могут понадобиться целочисленные значения или значения с плавающей запятой. Или, по крайней мере, он не будет работать со строками.

pt.multiplecollist = [0, 2] # column's number
pt.setColorbyValue()       # set colors using `pt.values_to_colors()` 

Другая проблема: он открывает диалоговое окно и запрашивает какой-либо цвет.

enter image description here

На основе исходного кода: setColorbyValue


enter image description here

import tkinter as tk
import pandas as pd
from pandastable import Table

df = pd.DataFrame({
    'A': [1,2,3,4,5,6],
    'B': [1,2,3,4,5,6],
    'C': [1,2,3,4,5,6],
})

root = tk.Tk()

table_frame = tk.Frame(root)
table_frame.pack()

pt = Table(table_frame, dataframe=df) # it can't be `root`, it has to be `frame` 
pt.show()

pt.multiplecollist = [0,2] # column's number
pt.setColorbyValue() # set colors using `pt.values_to_colors()` 

root.mainloop()

КСТАТИ: более полезным может быть setColorByMask()

mask_1 = pt.model.df['A'] < 5

pt.setColorByMask('A', mask_1, 'red')

mask_2 = pt.model.df['A'] >= 5

pt.setColorByMask('A', mask_2, 'green')

enter image description here

import tkinter as tk
import pandas as pd
from pandastable import Table

df = pd.DataFrame({
    'A': [1,2,3,4,5,6],
    'B': [1,2,3,4,5,6],
    'C': [1,2,3,4,5,6],
})

root = tk.Tk()

table_frame = tk.Frame(root)
table_frame.pack()

pt = Table(table_frame, dataframe=df) # it can't be `root`, it has to be `frame` 
pt.show()

mask_1 = pt.model.df['A'] < 5
pt.setColorByMask('A', mask_1, 'red')
mask_2 = pt.model.df['A'] >= 5
pt.setColorByMask('A', mask_2, 'green')

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...