Qpainter PyQt5更新图像上的绘画
使用PyQt5 QPaint在图像上绘制感兴趣的区域框,我希望能够随时间动态更新。在示例代码中,我在图像上绘制了一个矩形,等待1秒,在图像上绘制第二个矩形,然后在1秒后绘制第三个矩形。我希望前面的矩形消失。我遇到的问题是,矩形都是持久的。repaint()调用并没有像我所希望的那样彻底清除图形。有什么想法吗Qpainter PyQt5更新图像上的绘画,qpainter,Qpainter,使用PyQt5 QPaint在图像上绘制感兴趣的区域框,我希望能够随时间动态更新。在示例代码中,我在图像上绘制了一个矩形,等待1秒,在图像上绘制第二个矩形,然后在1秒后绘制第三个矩形。我希望前面的矩形消失。我遇到的问题是,矩形都是持久的。repaint()调用并没有像我所希望的那样彻底清除图形。有什么想法吗 from PyQt5 import QtWidgets, QtCore, QtGui from PyQt5.QWidgets import QApplication, QMainWindow
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QPainter, QPen, QPixmap
from PyQt5.QtCore import Qt
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(150,150,500,500)
self.ImageWindow = QtWidgets.QLabel(self)
self.ImageWindow.setGeometry(QtCore.QRect(0,0,150,150))
self.timer = QtCore.QTimer(self)
self.state = 0
self.timer.start(1)
self.pixmap = QPixmap('marvel.png')
self.pixmap.scaled(QtCore.Qsize(100,100))
self.timer.timeout.connect(self.prepareDrawing)
def prepareDrawing(self):
self.state += 1
self.timer.start(1000)
self.ImageWindow.repaint()
if self.state == 1:
pen = QPen(Qt.red,2, Qt.SolidLine)
self.drawRect(0,0,100,100,pen)
elif self.state == 2:
pen = QPen(Qt.blue,2, Qt.DashLine)
self.drawRect(20,0,100,100,pen)
elif self.state == 2:
pen = QPen(Qt.green,2, Qt.DashDotLine)
self.drawRect(40,0,50,50,pen)
def drawRect(self,x,y,w,h,p):
painter = QPainter(self)
painter.begin(self.pixmap)
painter.setPen(p)
painter.drawRect(x,y,w,h)
painter.end()
self.ImageWindow.setPixmap(self.pixmap)
self.show()
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())