Мышь событие в питоне - PullRequest
       13

Мышь событие в питоне

0 голосов
/ 03 ноября 2019
  1. Когда пользователь щелкает где-то в окне (обозначается вызовом mousePressEvent), создайте новый объект Shape случайным образом, который будет расположен в координатах щелчка, и добавьте этот Shape в список элементов для рисования, которыйдолжен быть атрибутом вашего класса. <-Мне нужна помощь в создании этого, потому что я столкнулся с ошибками при попытке сделать это. <-Это вопрос, на который мне нужна помощь. </li>
import sys, random
from PyQt5 import QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QPainter, QPainterPath, QBrush, QPen
from PyQt5.QtCore import Qt

class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = "Main Window"
        self.right= 200
        self.left= 200
        self.width = 500
        self.height = 500
        self.Window()

    def Window(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.right, self.left, self.width, self.height)
        self.show()

    class shape():
        def __init__(self,length,position,color):
            self.length=length
            self.position=position
            self.color= random.choice(colors)

    class circle(shape):
        def paintEvent(self, event):
            painter = QPainter(self)
            painter.setPen(QPen(Qt.red,  4 , Qt.SolidLine))
            painter.drawEllipse(20, 20, 200, 200)

    class rectangle(shape):
        def paintEvent(self, event):
            painter = QPainter(self)
            painter.setPen(QPen(Qt.yellow,  7, Qt.DotLine))
            painter.drawRect(10, 20, 100, 200)

    class ellipse(shape):
        def paintEvent(self, event):
            painter = QPainter(self)
            painter.setPen(QPen(Qt.black,  4, Qt.SolidLine))
            painter.setBrush(QBrush(Qt.black, Qt.SolidPattern))
            painter.drawEllipse(20, 20, 200, 100)

    class triangle(shape):
        def paintEvent(self, event):
            painter = QPainter()
            path = QPainterPath()
            painter.begin(self)
            painter.setRenderHint(QPainter.Antialiasing)
            painter.setPen(QtCore.Qt.red)
            path.lineTo(180, 300)
            path.lineTo(200, 100)
            path.lineTo(10, 50)
            painter.drawPath(path)

    class square(shape):
        def paintEvent(self, event):
            painter = QPainter()
            path = QPainterPath()
            painter.begin(self)
            painter.setRenderHint(QPainter.Antialiasing)
            painter.setPen(QtCore.Qt.red)
            path.lineTo(20, 12)
            path.lineTo(20, 28)
            path.lineTo(36, 28)
            path.lineTo(36,12)
            path.lineTo(20,12)
            painter.drawPath(path)

    def mousePressEvent(self, event):
        print(painter.drawRect(10, 20, 100, 200))  

App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())

mousePressEvent выдает ошибку, и я не знаю, как создать новую фигуру в произвольном порядке в координатах щелчка, хотя я знаю,Мне нужно использовать событие нажатия мыши. Остальная часть моего кода не очень актуальна, но эта часть в моем коде - часть, с которой я борюсь. Буду признателен за помощь.

...