Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 519523

Paint в PYqt5 PYTHON - Python для начинающих

$
0
0
Помогите пожалуйста! Делаю рисовалку, уже сделал кисти, но не могу сделать инструмент фигуры, падает когда хочу нарисовать прямоугольник. Помогите пожалуйста!


:

from PyQt5.QtWidgets import QMainWindow, QApplication, QMenu, QMenuBar, QAction, QFileDialog
from PyQt5.QtGui import QIcon, QImage, QPainter, QPen, QBrush
from PyQt5.QtCore import Qt, QPoint
from PyQt5 import QtGui
import sys


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        title = "Paint Application"
        self.pos1 = [0, 0]
        self.pos2 = [0, 0]
        self.k = ()
        self.pryamougs = []
        self.sost = False
        top = 400
        left = 400
        width = 800
        height = 600

        self.setWindowTitle(title)
        self.setGeometry(top, left, width, height)

        self.image = QImage(self.size(), QImage.Format_RGB32)
        self.image.fill(Qt.white)

        self.drawing = False
        self.brushSize = 2
        self.brushColor = Qt.black
        self.lastPoint = QPoint()

        mainMenu = self.menuBar()
        fileMenu = mainMenu.addMenu("Файл")
        brushSize = mainMenu.addMenu("Размер кисти")
        brushColor = mainMenu.addMenu("Цвет кисти")
        figur = mainMenu.addMenu("Фигуры")

        r = QAction("Прямоугольник", self)
        figur.addAction(r)
        r.triggered.connect(self.rct)

        saveAction = QAction("Сохранить", self)
        saveAction.setShortcut("Ctrl+S")
        fileMenu.addAction(saveAction)
        saveAction.triggered.connect(self.save)

        clearAction = QAction("Очистить", self)
        clearAction.setShortcut("Ctrl+C")
        fileMenu.addAction(clearAction)
        clearAction.triggered.connect(self.clear)

        threepxAction = QAction("3px", self)
        brushSize.addAction(threepxAction)
        threepxAction.triggered.connect(self.threePixel)

        fivepxAction = QAction("5px", self)
        brushSize.addAction(fivepxAction)
        fivepxAction.triggered.connect(self.fivePixel)

        sevenpxAction = QAction("7px", self)
        brushSize.addAction(sevenpxAction)
        sevenpxAction.triggered.connect(self.sevenPixel)

        ninepxAction = QAction("9px", self)
        brushSize.addAction(ninepxAction)
        ninepxAction.triggered.connect(self.ninePixel)

        one_one_pxAction = QAction("11px", self)
        brushSize.addAction(one_one_pxAction)
        one_one_pxAction.triggered.connect(self.one_one_Pixel)

        one_three_pxAction = QAction("13px", self)
        brushSize.addAction(one_three_pxAction)
        one_three_pxAction.triggered.connect(self.one_three_Pixel)

        one_five_pxAction = QAction("15px", self)
        brushSize.addAction(one_five_pxAction)
        one_five_pxAction.triggered.connect(self.one_five_Pixel)

        one_seven_pxAction = QAction("17px", self)
        brushSize.addAction(one_seven_pxAction)
        one_seven_pxAction.triggered.connect(self.one_seven_Pixel)

        blackAction = QAction("Чёрный", self)
        blackAction.setShortcut("Ctrl+B")
        brushColor.addAction(blackAction)
        blackAction.triggered.connect(self.blackColor)

        whitekAction = QAction("Белый", self)
        whitekAction.setShortcut("Ctrl+W")
        brushColor.addAction(whitekAction)
        whitekAction.triggered.connect(self.whiteColor)

        redAction = QAction("Красный", self)
        redAction.setShortcut("Ctrl+R")
        brushColor.addAction(redAction)
        redAction.triggered.connect(self.redColor)

        greenAction = QAction("Зелёный", self)
        greenAction.setShortcut("Ctrl+G")
        brushColor.addAction(greenAction)
        greenAction.triggered.connect(self.greenColor)

        yellowAction = QAction("Жёлтый", self)
        yellowAction.setShortcut("Ctrl+Y")
        brushColor.addAction(yellowAction)
        yellowAction.triggered.connect(self.yellowColor)

        blueAction = QAction("Синий", self)
        brushColor.addAction(blueAction)
        blueAction.triggered.connect(self.blueColor)


    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.drawing = True
            self.lastPoint = event.pos()
            self.pos1[0], self.pos1[1] = event.pos().x(), event.pos().y()
        self.update()
    def mouseMoveEvent(self, event):
        if (event.buttons() and Qt.LeftButton) and self.drawing:
            painter = QPainter(self.image)
            painter.setPen(QPen(self.brushColor, self.brushSize, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
            painter.drawLine(self.lastPoint, event.pos())
        self.pos2[0], self.pos2[1] = event.x(), event.y()
        self.lastPoint = event.pos()
        self.update()

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.drawing = False
        self.pos2[0], self.pos2[1] = event.pos().x(), event.pos().y()
        self.pryamougs.append(
            [self.pos1[0], self.pos1[1], self.pos2[0] - self.pos1[0], self.pos2[1] - self.pos1[1]])
        self.update()



    def paintEvent(self, event):
        canvasPainter = QPainter(self)
        canvasPainter.drawImage(self.rect(), self.image, self.image.rect())
        if self.sost:
            print(0)
            w = self.pos2[0] - self.pos1[0]
            h = self.pos2[1] - self.pos1[1]
            self.k = (self.pos1[0], self.pos1[1], w, h)
            qp = QPainter(self)
            qp.begin(self)
            self.rct(qp)
            qp.drawRect(*self.k)
            qp.end()

    def save(self):
        filePath, _ = QFileDialog.getSaveFileName(self, "Save Image", "",
                                                  "PNG(*.png);;JPEG(*.jpg *.jpeg);;All Files(*.*) ")

        if filePath == "":
            return
        self.image.save(filePath)

    def clear(self):
        self.image.fill(Qt.white)
        self.update()

    def threePixel(self):
        self.brushSize = 3

    def fivePixel(self):
        self.brushSize = 5

    def sevenPixel(self):
        self.brushSize = 7

    def ninePixel(self):
        self.brushSize = 9

    def one_one_Pixel(self):
        self.brushSize = 11

    def one_three_Pixel(self):
        self.brushSize = 13

    def one_five_Pixel(self):
        self.brushSize = 15

    def one_seven_Pixel(self):
        self.brushSize = 17

    def blackColor(self):
        self.brushColor = Qt.black

    def whiteColor(self):
        self.brushColor = Qt.white

    def redColor(self):
        self.brushColor = Qt.red

    def greenColor(self):
        self.brushColor = Qt.green

    def yellowColor(self):
        self.brushColor = Qt.yellow

    def blueColor(self):
        self.brushColor = Qt.blue

    def rct(self, qp):
        print('ok')
        self.sost = True
        #self.sost = 'ok'
        #k = self.k
        qp.drawRect(*self.k)
        for i in self.pryamougs:
            qp.drawRect(*i)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    app.exec()


Viewing all articles
Browse latest Browse all 519523

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>