使用Pyqt5动态显示数据
时间: 2023-09-04 09:15:45 浏览: 55
要使用PyQt5动态显示数据,你需要使用QTableView和QStandardItemModel。以下是一个简单的例子:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QVBoxLayout, QWidget, QHeaderView, QPushButton, QAbstractItemView, QSizePolicy
from PyQt5.QtGui import QStandardItemModel, QStandardItem
import sys
class MainWindow(QMainWindow):
def __init__(self, data):
super().__init__()
self.setWindowTitle('Dynamic Data')
self.setGeometry(100, 100, 500, 500)
# Create a table view
self.table_view = QTableView(self)
self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.table_view.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
# Create a button to add data
self.add_data_btn = QPushButton('Add Data', self)
self.add_data_btn.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
self.add_data_btn.clicked.connect(self.add_data)
# Create a vertical layout
self.layout = QVBoxLayout()
self.layout.addWidget(self.table_view)
self.layout.addWidget(self.add_data_btn)
# Create a widget to hold the layout
self.widget = QWidget()
self.widget.setLayout(self.layout)
# Set the central widget of the main window
self.setCentralWidget(self.widget)
# Create a data model and assign it to the table view
self.model = QStandardItemModel()
self.table_view.setModel(self.model)
self.table_view.setSelectionBehavior(QAbstractItemView.SelectRows)
self.table_view.setSelectionMode(QAbstractItemView.SingleSelection)
# Add the data to the model
self.add_data(data)
def add_data(self, data=None):
# If no data is provided, create dummy data
if not data:
data = [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
# Add the data to the model
for row in data:
items = [QStandardItem(str(item)) for item in row]
self.model.appendRow(items)
if __name__ == '__main__':
app = QApplication(sys.argv)
data = [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
window = MainWindow(data)
window.show()
sys.exit(app.exec_())
```
在此示例中,我们创建了一个MainWindow类,该类继承自QMainWindow,并使用QTableView和QStandardItemModel来显示数据。我们还添加了一个QPushButton,该按钮允许我们动态添加数据。
在MainWindow类的构造函数中,我们首先创建一个QTableView和QPushButton,并将它们添加到一个QVBoxLayout中。然后,我们创建一个QStandardItemModel并将其分配给QTableView。最后,我们将数据添加到模型中。
add_data()函数允许我们动态添加数据。我们首先检查是否提供了数据。如果没有提供数据,则创建一个虚拟数据。然后,我们使用QStandardItem创建一个项目列表,并将其添加到模型中。
可以使用以下命令运行示例:
```
python dynamic_data.py
```