class Square(QWidget): def __init__(self): super(Square, self).__init__() self.setup() self.x = 0 self.y = 0 self.diffX = 0 self.diffY = 0 self.q = QTimer(self) self.q.timeout.connect(self.animate) self.q.start(10) self.color = QColor(255, 0, 0) self.drag = False self.show() def setup(self): self.setGeometry(0, 0, 600, 400) p = self.palette() p.setColor(self.backgroundRole(), Qt.white) self.setPalette(p) def paintEvent(self, event): self.qp = QPainter(self) self.qp.begin(self) self.qp.setBrush(self.color) self.qp.drawRect(self.x, self.y, 50, 50) self.qp.end() def mouseMoveEvent(self, QMouseEvent): if self.drag == True: self.x = QMouseEvent.x() - self.diffX self.y = QMouseEvent.y() - self.diffY def mousePressEvent(self, e): self.pressed = True if e.x() >= self.x and e.x() <=self.x+50 \ and e.y() >= self.y and e.y() <=self.y+50: self.drag = True self.diffX = e.x() - self.x self.diffY = e.y() - self.y def mouseReleaseEvent(self, QMouseEvent): self.pressed = False self.drag = False def mouseDoubleClickEvent(self, e): if e.x() >= self.x and e.x() <=self.x+50 \ and e.y() >= self.y and e.y() <=self.y+50: self.c = QColorDialog(self) self.c.setVisible(True) self.color = self.c.getColor() self.update() def animate(self): if self.drag == True: self.update()
class Example(QWidget, Ui_Form): def __init__(self): super(Example, self).__init__() self.setupUi(self) # self.graphicsView.clicked.connect(self.PaintEvent) self.pushButton_2.clicked.connect(self.clear) self.pushButton.clicked.connect(self.selectColor) def PaintEvent(self, e): self.qp = QPainter(self) self.qp.begin(self) self.qp.setBrush(self.color) self.qp.drawRect(self.x, self.y, 100, 100) def clear(self): print "cleared" def selectColor(self, e): self.c = QColorDialog(self) self.c.setVisible(True) self.color = self.c.getColor() self.update()