【发布时间】:2019-08-26 18:19:40
【问题描述】:
在我的程序中,我可以选择一个设置 self.rectmode=1 的按钮。一旦该变量设置为 1,它就会使用 qgraphicsview 上的鼠标事件绘制矩形。按下按钮设置 self.rectmode=0 后,程序继续使用鼠标事件绘制矩形。我是否缺少一些线来结束矩形绘图事件。我的代码在下面提前感谢:
def mousePressEvent(self, event):
if (self.rectmode==1 and event.button() == Qt.LeftButton and not self._photo.pixmap().isNull()):
self.origin = event.pos()
self.rubberBand.setGeometry(QRect(self.origin, QSize()))
self.rectChanged.emit(self.rubberBand.geometry())
self.rubberBand.show()
self.changeRubberBand = True
else:
super(PhotoViewer, self).mousePressEvent(event)
def mouseMoveEvent(self, event):
if self.rectmode==1 and self.changeRubberBand:
self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized())
self.rectChanged.emit(self.rubberBand.geometry())
else:
super(PhotoViewer, self).mouseMoveEvent(event)
def mouseReleaseEvent(self, event):
if self.rectmode==1 and event.button() == Qt.LeftButton:
self.changeRubberBand = False
self.endpoint = event.pos()
print(self.origin.x())
print(self.origin.y())
print(self.endpoint.x())
print(self.endpoint.y())
else:
super(PhotoViewer, self).mouseReleaseEvent(event)
【问题讨论】:
-
从您的摘录中可以看出,一切都应该按预期工作。也许有一些你没有考虑到的变量设置。您能否扩展您的代码以使其更全面和可重现(同时保持最少)?
标签: python pyqt5 rectangles