代码解释:通过继承QLabel实现自定义类ImageLabel实现在图片指定位置实时刷新数据
from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget
from PySide6.QtGui import QPixmap, QPainter, QColor
from PySide6.QtCore import QTimer, Qt
class ImageLabel(QLabel):
def __init__(self, parent=None):
super().__init__(parent)
self.data = "Hello, World!"
def setData(self, data):
self.data = data
self.update() # 触发paintEvent
def paintEvent(self, event):
painter = QPainter(self)
pixmap = QPixmap("b.png") # 加载图片
painter.drawPixmap(0, 0, pixmap) # 在QLabel上绘制图片
painter.setPen(QColor(255, 255, 255)) # 设置文本颜色
painter.drawText(10, 50, self.data) # 在指定位置绘制文本
app = QApplication([])
widget = QWidget()
layout = QVBoxLayout(widget)
label = ImageLabel()
layout.addWidget(label)
timer = QTimer()
timer.timeout.connect(lambda: label.setData("New Data")) # 每次计时器超时时更新数据
timer.start(5000) # 每1000毫秒(1秒)触发一次超时
widget.show()
app.exec()
实时刷新图片与数据
from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget
from PySide6.QtGui import QPixmap, QPainter, QColor
from PySide6.QtCore import QTimer, Qt
class ImageLabel(QLabel):
def __init__(self, parent=None):
super().__init__(parent)
self.data = "Hello, World!"
self.path = 'a.png'
def setData(self, data, path):
self.data = data
self.path = path
self.update() # 触发paintEvent
def paintEvent(self, event):
painter = QPainter(self)
pixmap = QPixmap(self.path) # 加载图片
painter.drawPixmap(0, 0, pixmap) # 在QLabel上绘制图片
painter.setPen(QColor(255, 255, 255)) # 设置文本颜色
painter.drawText(10, 50, self.data) # 在指定位置绘制文本
app = QApplication([])
widget = QWidget()
layout = QVBoxLayout(widget)
label = ImageLabel()
layout.addWidget(label)
timer = QTimer()
timer.timeout.connect(lambda: label.setData("New Data", "b.png")) # 每次计时器超时时更新数据
timer.start(5000) # 每1000毫秒(1秒)触发一次超时
widget.show()
app.exec()