PyQt QTableView непомерно медленный при прокрутке с большими наборами данных

У меня есть программа, которая загружает профиль из csv-файла и отображает данные в таблице. Загрузка фрейма данных pandas в таблицу выполняется быстро, потому что я использовал пользовательскую реализацию модели QAbstractTableModel, но изменение размера виджета QTableView невероятно медленно.

что я могу сделать, чтобы сделать изменение размера и перемещение?

1 ответов


Ну, я закончил тем, что изменил пользовательскую модель таблицы, которую я сделал для использования numpy, и теперь она пылает быстро.

используйте эту модель таблицы:

import numpy as np

class PandasModel(QtCore.QAbstractTableModel):
    """
    Class to populate a table view with a pandas dataframe
    """
    def __init__(self, data, parent=None):
        QtCore.QAbstractTableModel.__init__(self, parent)
        self._data = np.array(data.values)
        self._cols = data.columns
        self.r, self.c = np.shape(self._data)

    def rowCount(self, parent=None):
        return self.r

    def columnCount(self, parent=None):
        return self.c

    def data(self, index, role=QtCore.Qt.DisplayRole):
        if index.isValid():
            if role == QtCore.Qt.DisplayRole:
                return self._data[index.row(),index.column()]
        return None


    def headerData(self, p_int, orientation, role):
        if role == QtCore.Qt.DisplayRole:
            if orientation == QtCore.Qt.Horizontal:
                return self._cols[p_int]
            elif orientation == QtCore.Qt.Vertical:
                return p_int
        return None