Как исправить ошибку при рисовании изображения QPixmap?

221 просмотра
0
0 Комментариев

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_())


Добавить комментарий

0 Answers

Python Опубликовано 10.12.2018
Напишите свой ответ на данный вопрос.
Scroll Up