PyQT / Pandas - самый быстрый способ обновления данных виджета таблицы - PullRequest
0 голосов
/ 30 апреля 2020

Предположим, у меня есть 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?

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