pyqt qpainter 在 qpixmap 上画画,实时展示
时间: 2023-07-05 11:10:58 浏览: 134
如果您想要实时展示在QPixmap上的绘制结果,可以将QPixmap放到QLabel上,并在每次绘制后更新QLabel的显示内容。下面是一个简单的例子:
```python
from PyQt5.QtWidgets import QLabel, QWidget, QVBoxLayout, QApplication
from PyQt5.QtGui import QPixmap, QPainter, QPen, QColor
from PyQt5.QtCore import Qt, QTimer
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建一个QLabel用于显示绘制结果
self.label = QLabel(self)
self.label.setGeometry(0, 0, 400, 400)
# 创建一个QPixmap用于绘制
self.pixmap = QPixmap(400, 400)
self.pixmap.fill(Qt.white)
# 创建一个QPainter对象
self.painter = QPainter(self.pixmap)
self.painter.setRenderHint(QPainter.Antialiasing)
# 创建一个定时器用于更新绘制结果
self.timer = QTimer(self)
self.timer.setInterval(500)
self.timer.timeout.connect(self.updatePixmap)
self.timer.start()
def paintEvent(self, event):
# 绘制内容
pen = QPen(QColor(0, 0, 255))
pen.setWidth(2)
self.painter.setPen(pen)
self.painter.drawLine(0, 0, 400, 400)
self.painter.drawLine(400, 0, 0, 400)
self.painter.drawRect(100, 100, 200, 200)
self.painter.drawEllipse(50, 50, 300, 300)
# 将绘制结果显示在QLabel上
self.label.setPixmap(self.pixmap)
def updatePixmap(self):
# 每隔一段时间更新绘制结果
self.pixmap.fill(Qt.white)
self.update()
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
在上面的代码中,我们创建了一个自定义的QWidget,并在其中创建了一个QLabel和一个QPixmap。在自定义QWidget的paintEvent()方法中,我们绘制了一些内容,并将绘制结果显示在QLabel上。我们还创建了一个定时器,每隔500ms就会更新QPixmap的绘制结果。在updatePixmap()方法中,我们将QPixmap填充为白色,并调用update()方法来触发paintEvent()方法的调用,从而更新绘制结果。最后,我们将自定义QWidget显示出来,并启动Qt应用程序的事件循环。
阅读全文