Предположим, у меня есть pandas фрейм данных df
(или словарь), такой как:
col1 col2 col3
0 A A 0
1 A B 0
2 C A 1
3 B C 0
4 A E 1
и QTableWidget tableWidget
с 2 столбцами:
col1 col2
0 A A
1 A B
2 C A
3 B C
4 A E
I можно обновить форматирование цвета каждой строки и ячейки в tableWidget
на основе значения строк col3
в кадре данных, выполнив итерацию по каждому QTableWidgetItem. Например, чтобы изменить цвет фона для строк, где col3 == 1
, я мог бы сделать что-то вроде этого:
row_count = len(data)
tableWidget.setRowCount(row_count)
for i in range(row_count):
row = df.iloc[i]
cell1 = row['col1']
cell2 = row['col2']
cell3 = row['col3']
item = QtWidgets.QTableWidgetItem(cell1)
if cell3 == 1:
item.setForeground(QtGui.QColor('red'))
tableWidget.setItem(i, 0, item)
item = QtWidgets.QTableWidgetItem(cell2)
if cell3 == 1:
item.setForeground(QtGui.QColor('red'))
tableWidget.setItem(i, 1, item)
Однако это очень медленно. При наличии 2000 строк данных обновление виджета таблицы может занять много времени. Существует ли более быстрый (лучший) способ обновления свойств элементов виджета таблицы на основе набора значений, вместо циклического перебора каждой строки и ячейки в al oop? Возможно, передав словарь значений форматирования в TableWidget?