I'm trying to draw a rectangle on GUI created by PyQt5 by drag and drop. I managed to do that, but the rectangle is drawn when the mouse left key is released.
What I want to do is like this link:
- When the mouse left button is pressed, start drawing the rectangle.
- While dragging, adjust the rectangle shape with the mouse movement.
- When the mouse left button is released, determine the rectangle shape.
How can I implement this? Thanks in advance.
Here's my code.
# -*- coding: utf-8 -*-import sysfrom PyQt5 import QtWidgets, QtCorefrom PyQt5.QtGui import QPainterclass MyWidget(QtWidgets.QWidget): def __init__(self): super().__init__() self.setGeometry(30,30,600,400) self.pos1 = [0,0] self.pos2 = [0,0] self.show() def paintEvent(self, event): width = self.pos2[0]-self.pos1[0] height = self.pos2[1] - self.pos1[1] qp = QPainter() qp.begin(self) qp.drawRect(self.pos1[0], self.pos1[1], width, height) qp.end() def mousePressEvent(self, event): self.pos1[0], self.pos1[1] = event.pos().x(), event.pos().y() print("clicked") def mouseReleaseEvent(self, event): self.pos2[0], self.pos2[1] = event.pos().x(), event.pos().y() print("released") self.update()if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) window = MyWidget() window.show() app.aboutToQuit.connect(app.deleteLater) sys.exit(app.exec_())