最近在用PyQt5做界面开发,需求是读取数据文件(来自数据库,文件,内存都可以),显示在QTableWidget中。当前使用的方法是网上大部分用的读取一个内容然后用QTableWidget的setItem方法显示在QTableWidget中。
`for i in range(rows):
for j in range(cols):
temp_data = df.values[i][j] # 临时记录,不能直接插入表格
data = QTableWidgetItem(str(temp_data)) # 转换后可插入表格
self.table.setItem(i, j, data)`
这种方式在数据量在几千几万行的时候还可以显示,当数据量到达几十万行以上时就不行了,巨慢。而一个页面一次显示的行数是有限的,其他的行靠滚轮滑动来显示,那么在PyQt里面有没有一种方法,一次只显示一定行数的数据,其它的行在滑轮滚动时动态显示?
数据先保存在list里,用一个变量指示当前被显示的最顶行,然后在
QWheelEvent
或QScrollBar
的valueChanged
的槽函数 中 删除不需要显示的行并添加需要被显示的新的行就可以啦。