1) При оформлении фона через QPixMap выводится ошибка, а если использовать
self.image для задание фона, то картинка спокойно грузится и можно рисовать
2)Как исправить мой код чтобы он оптимально работал с использованием QPixmap
import sys from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QHBoxLayout from PyQt5.QtGui import QPainter, QColor, QMouseEvent, QImage, QPixmap, QPen from PyQt5.QtCore import Qt class Example(QWidget): def __init__(self): super().__init__() self.flag = False self.initUI() def initUI(self): hbox = QHBoxLayout(self) pixmap = QPixmap('picture.png') painter = QPainter(pixmap) painter.drawEllipse(29, 29, 29, 29) painter.end() label = QLabel() label.setPixmap(pixmap) hbox.addWidget(label) self.show() def mousePressEvent(self, e): if e.button() == Qt.LeftButton: self.flag = True self.paint = QPainter(self.image) self.ellips(e) def paintEvent(self, e): paint = QPainter(self) paint.drawImage(0, 0, self.image) def mouseMoveEvent(self, e): if self.flag: print(e.pos()) self.ellips(e) def ellips(self, e): self.paint.setBrush(QColor('yellow')) self.paint.drawEllipse(e.pos(), 20, 20) self.update() app = QApplication(sys.argv) w = Example() sys.exit(app.exec_())
Если использовать QImage в качестве фона программа работает
import sys from PyQt5.QtWidgets import QWidget, QApplication from PyQt5.QtGui import QPainter, QColor, QMouseEvent, QImage from PyQt5.QtCore import Qt class Example(QWidget): def __init__(self): super().__init__() self.flag = False self.initUI() def initUI(self): self.resize(500,500) self.image = QImage(self.width(), self.height(), QImage.Format_ARGB32) self.image.fill(QColor(255,255,255)) self.show() def mousePressEvent(self, e): if e.button() == Qt.LeftButton: self.flag = True self.paint = QPainter(self.image) self.ellips(e) def paintEvent(self, e): paint = QPainter(self) paint.drawImage(0,0, self.image) def mouseMoveEvent(self, e): if self.flag: print(e.pos()) self.ellips(e) def ellips(self,e): self.paint.setBrush(QColor('yellow')) self.paint.drawEllipse(e.pos(), 20, 20) self.update() app = QApplication(sys.argv) w = Example() sys.exit(app.exec_())
Анонимный пользователь Изменен статус публикации