pyqt5在主窗口中显示表格并实时传入数据
时间: 2024-03-16 19:44:05 浏览: 68
python Qt5GUI界面主窗口和子窗口相互传值,保证能用
要在PyQt5中实时更新主窗口中的表格数据,可以使用QTimer和QStandardItemModel。QTimer可以用来定时触发更新表格数据的操作,而QStandardItemModel可以方便地添加、删除和更新表格数据。
下面是一个示例代码:
```python
from PyQt5.QtWidgets import QMainWindow, QTableView, QVBoxLayout, QWidget, QApplication
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtCore import QTimer
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建表格视图
self.table_view = QTableView()
# 创建模型并将其设置为表格视图的模型
self.model = QStandardItemModel(self.table_view)
self.table_view.setModel(self.model)
# 添加表格视图到主窗口布局中
central_widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(self.table_view)
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
# 添加数据到模型中
self.data = [['张三', '20', '男'], ['李四', '25', '女'], ['王五', '30', '男']]
self.add_data_to_model()
# 创建定时器并启动
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_model_data)
self.timer.start(1000) # 每秒更新一次数据
def add_data_to_model(self):
# 添加数据到模型中
self.model.setHorizontalHeaderLabels(['姓名', '年龄', '性别'])
for row in range(len(self.data)):
for column in range(len(self.data[row])):
item = QStandardItem(self.data[row][column])
self.model.setItem(row, column, item)
def update_model_data(self):
# 更新模型数据
for row in range(len(self.data)):
for column in range(len(self.data[row])):
item = self.model.item(row, column)
item.setText(str(int(item.text()) + 1))
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例代码中,我们创建了一个MainWindow类,并在构造函数中创建了一个QTableView对象和一个QStandardItemModel对象,然后将其添加到主窗口布局中。我们还添加了一些示例数据到模型中,并创建了一个定时器,每秒钟更新一次数据。
在update_model_data方法中,我们使用两个for循环遍历模型中的所有单元格,并将其值加1。这个方法将被定时器调用,以便实时更新表格数据。
运行这个示例代码,就可以在主窗口中显示一个带有实时更新数据的表格了。
阅读全文