PyQt QTableView在滚动大数据集时非常慢



我有一个程序,它从csv文件加载一个配置文件,并在一个表中显示数据。由于我使用了QAbstractTableModel的自定义模型实现,所以将pandas数据帧加载到表中非常快,但是调整QTableView小部件的大小却非常慢。

我怎么做才能使调整大小和滚动更平滑?

最后,我修改了我使用numpy创建的自定义表模型,现在它的速度非常快。

更新22-02-2020工作于Pandas 1.0.1:

使用这个表模型:

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 str(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

最新更新