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

Python PyQt QTableView在滚动大数据集时速度非常慢,python,pyqt4,qtableview,Python,Pyqt4,Qtableview,我有一个程序,从csv文件加载配置文件,并在表格中显示数据。将pandas数据帧加载到表中的速度很快,因为我使用了QAbstractTableModel的自定义模型实现,但是QTableView小部件的大小调整速度非常慢 我该怎么做才能使调整大小和滚动更平滑?好吧,我最终修改了使用numpy制作的自定义表格模型,现在它的速度非常快 更新日期:2020年2月22日 从1.0.1起生效: 使用此表格模型: import numpy as np class PandasModel(QtCore.QA

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


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

好吧,我最终修改了使用numpy制作的自定义表格模型,现在它的速度非常快

更新日期:2020年2月22日 从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

展示你所尝试的!!!我们猜不出这个问题,是不是不清楚?我在一个表中加载10k行,滚动会花费很长时间,您需要什么代码,将模型设置为表的代码?在其他语言中有渲染控制的启用,但我不知道如何在QT环境中实现。在C++中类似的问题:使用
QTreeView
更糟糕,同样使用
uniformRowHeight
技巧。
返回self.\u data[index.row(),index.column()]
对我来说根本不起作用。From a.item(*args)与[args]非常相似,不同之处在于返回的不是数组标量,而是标准Python标量。这对于加速对数组元素的访问以及使用Python的优化数学对数组元素进行算术运算非常有用。因此,我使用了
row\u column=tuple([index.row(),index.column()])
return self.\u data.item(row\u column)