写一段 pyside6 的代码,用 qtableview 实时显示大量数据
时间: 2024-05-15 19:16:05 浏览: 210
下面是一段使用 PySide6 和 QTableView 实时显示大量数据的示例代码:
```python
from PySide6.QtCore import Qt, QTimer
from PySide6.QtGui import QStandardItemModel, QStandardItem
from PySide6.QtWidgets import QApplication, QMainWindow, QTableView
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 初始化数据模型
self.model = QStandardItemModel()
self.model.setHorizontalHeaderLabels(['id', 'name', 'age', 'gender'])
for i in range(10000):
self.add_row(i, f'name{i}', 18, 'male')
# 初始化表格视图
self.table_view = QTableView()
self.table_view.setModel(self.model)
self.setCentralWidget(self.table_view)
# 启动定时器,每秒钟添加一行数据
self.timer = QTimer()
self.timer.timeout.connect(self.add_random_row)
self.timer.start(1000)
def add_row(self, id, name, age, gender):
row = [QStandardItem(str(id)), QStandardItem(name), QStandardItem(str(age)), QStandardItem(gender)]
self.model.appendRow(row)
def add_random_row(self):
import random
self.add_row(random.randint(1, 10000), f'name{random.randint(1, 10000)}', random.randint(1, 100), random.choice(['male', 'female']))
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
```
在这个例子中,我们使用了 QStandardItemModel 作为数据模型,它可以方便地添加和删除表格中的行和列,并支持设置表格的表头。我们首先初始化了一个包含 10000 行数据的数据模型,并将它设置为表格视图的模型。然后我们启动了一个定时器,每秒钟调用一次 `add_random_row` 方法来添加一行随机数据。这样我们可以实时地向表格中添加数据,同时在表格中滑动和查找数据也不会卡顿。
阅读全文