import sys from PyQt5.QtWidgets import QApplication, QWidget, QFrame from PyQt5.QtGui import QColor, QPainter, QImage from PyQt5.QtCore import Qt class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.resize(500,500) self.frame = QFrame(self) self.frame.resize(400,200) self.frame.move(50,200) self.frame.setStyleSheet('QWidget {Background-color: %s}'% QColor('white').name()) self.image = QImage(200,200, QImage().Format_ARGB32) self.paint = QPainter(self.image) self.show() def paintEvent(self, e): paint = QPainter(self.frame) paint.drawImage(0,0,self.image) def mousePressEvent(self, e): if e.button() == Qt.LeftButton: self.goEllipse(e) def mouseMoveEvent(self, e): self.goEllipse(e) def goEllipse(self, e): self.paint.setBrush(QColor('black')) self.paint.drawEllipse(e.pos(), 10, 10) self.frame.update() app = QApplication(sys.argv) w = Example() sys.exit(app.exec_())
Здесь мы по идее создаём self.paint прикрепляем к нему QImage, рисуем на ней, а в paintEvent отображает QImage. Делал тоже самое без QFrame - работало. Теперь ничего не прорисовывается. По задумке Ellipse должны рисоваться только в фрейме. Не знаю что делать.