首页 > 解决方案 > 如何用pyqt中的数据快速填充QTableView/Model

问题描述

我正在寻找一种在 python 中用超过 10000 行数据填充 QTableModel 的快速方法。

在双 for 循环中迭代项目需要 40 多秒。

标签: pythonpyqtqtableview

解决方案


我建议创建一个 QStandardItem 的 numpy 数组并使用 appendColumn 函数填充模型:

start = time.time()
data = np.empty(rows, cols, dtype=object)              # generate empty data-Array

#### Fill the data array with strings here ###

items = np.vectorize(QStandardItem)(data)              # generate QStandardItem-Array
print(time.time() - start, "seconds to create items")

start = time.time()
# iterate over columns (because we have segneficantly less columns than rows)
for i in range(len(cols)): 
    self.myQTableModel.appendColumn(items[:,i])

self.myQTableModel.setHorizontalHeaderLabels(headerarray)    # set headers
print(time.time()-start, "seconds to load DB")

16000 行和 7 列的结果:

0.346372127532959 seconds to create items
1.1745991706848145 seconds to load DB

推荐阅读