- Когда пользователь щелкает где-то в окне (обозначается вызовом 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
выдает ошибку, и я не знаю, как создать новую фигуру в произвольном порядке в координатах щелчка, хотя я знаю,Мне нужно использовать событие нажатия мыши. Остальная часть моего кода не очень актуальна, но эта часть в моем коде - часть, с которой я борюсь. Буду признателен за помощь.