在 PyQt 中,点击按钮table 控件中显示数据,当数据更新后table显示新的数据,要怎么做
时间: 2024-06-09 21:05:04 浏览: 146
要实现这个功能,可以采用以下步骤:
1. 在 PyQt 中创建一个表格控件(QTableWidget)以及一个按钮(QPushButton)。
2. 将按钮的clicked信号连接到一个函数上,在该函数中获取最新的数据,并将其插入到表格控件中。
3. 在插入数据之前,可以先清空表格控件中的原有数据,以确保新的数据可以正确地显示。
4. 最后,可以调用表格控件的show()函数以及应用程序的exec_()函数来显示界面和运行事件循环。
下面是一个示例代码,可以参考一下:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QPushButton, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建表格控件和按钮
self.tableWidget = QTableWidget()
self.btn = QPushButton('Load Data')
# 将按钮的clicked信号连接到loadData函数上
self.btn.clicked.connect(self.loadData)
# 创建一个垂直布局,并将表格控件和按钮添加到该布局中
vbox = QVBoxLayout()
vbox.addWidget(self.tableWidget)
vbox.addWidget(self.btn)
# 将布局设置为窗口的主布局
self.setLayout(vbox)
# 设置窗口的大小和标题
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Table Example')
self.show()
def loadData(self):
# 获取最新的数据,并将其插入到表格控件中
data = [['Alice', 25, 'Female'], ['Bob', 30, 'Male'], ['Charlie', 35, 'Male']]
self.tableWidget.setRowCount(0)
for row in data:
self.tableWidget.insertRow(self.tableWidget.rowCount())
for col, val in enumerate(row):
item = QTableWidgetItem(str(val))
self.tableWidget.setItem(self.tableWidget.rowCount() - 1, col, item)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
```
在上面的代码中,loadData函数用于获取最新的数据,并将其插入到表格控件中。在插入数据之前,我们调用了tableWidget.setRowCount(0)函数来清空表格控件中的原有数据。然后,我们使用两个for循环来遍历数据,并将每个单元格的值插入到表格控件中。注意,我们使用了tableWidget.rowCount()函数来获取表格控件当前的行数,并使用tableWidget.insertRow()函数来插入新的行。
最后,我们在主函数中创建了应用程序对象,并将Example类的实例作为窗口显示出来。当用户点击按钮时,就会调用loadData函数来更新表格控件中的数据。
阅读全文