QTableWidget实时更新数据,突出显示部分行信息内容
时间: 2023-06-17 09:01:59 浏览: 157
要实现QTableWidget实时更新数据并突出显示部分行信息内容,可以使用QTimer类来定时刷新表格,并使用QTableWidgetItem的setBackground方法来设置特定行的背景色。
以下是一个示例代码:
```python
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
class Example(QTableWidget):
def __init__(self):
super().__init__()
# 设置表格属性
self.setColumnCount(3)
self.setRowCount(5)
self.setHorizontalHeaderLabels(['Name', 'Age', 'Gender'])
# 初始化数据
self.setData()
# 定时器刷新表格
self.timer = QTimer(self)
self.timer.timeout.connect(self.refreshTable)
self.timer.start(1000) # 每隔1秒刷新一次
def setData(self):
# 添加数据
for i in range(5):
nameItem = QTableWidgetItem("Name {}".format(i))
self.setItem(i, 0, nameItem)
ageItem = QTableWidgetItem(str(i + 20))
self.setItem(i, 1, ageItem)
genderItem = QTableWidgetItem("Male" if i % 2 == 0 else "Female")
self.setItem(i, 2, genderItem)
def refreshTable(self):
# 更新数据
for i in range(5):
ageItem = self.item(i, 1)
age = int(ageItem.text())
ageItem.setText(str(age + 1))
# 突出显示特定行
for i in range(5):
if int(self.item(i, 1).text()) > 22:
for j in range(3):
self.item(i, j).setBackground(QColor(255, 0, 0))
else:
for j in range(3):
self.item(i, j).setBackground(QColor(255, 255, 255))
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
```
在这个示例中,我们使用QTimer每秒钟刷新一次表格,并使用setBackground方法将年龄大于22的行突出显示为红色。
阅读全文