【发布时间】:2017-09-08 09:50:41
【问题描述】:
我的 q qrubberband 显示不好,认为想要的坐标没问题:
class Viewer(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.graphicsView = QtWidgets.QGraphicsView()
self.hbox = QtWidgets.QVBoxLayout()
self.scene = Scene(self)
self.splitter = QtWidgets.QSplitter()
self.splitter.addWidget(self.graphicsView)
self.widget.setLayout(self.hbox)
self.setCentralWidget(self.widget)
我在场景中加载像素图:
def open_picture(self):
self.scene.setSceneRect(0, 0, self.pixmap.width(), self.pixmap.height())
self.scene.addPixmap(self.pixmap)
self.graphicsView.setScene(self.scene)
self.graphicsView.show()
我有从 QGraphicsScene 继承的场景,主要是在场景中处理一个 qrubberband
class Scene(QtWidgets.QGraphicsScene):
def __init__(self, parent=None):
super(Scene, self).__init__(parent)
def mousePressEvent(self, event):
self.originQPoint = event.scenePos()
self.originQPoint = self.originQPoint.toPoint()
self.currentQRubberBand = QtWidgets.QRubberBand(QtWidgets.QRubberBand.Rectangle)
def mouseMoveEvent(self, event):
self.currentQRubberBand.setGeometry(QtCore.QRect(self.originQPoint, event.scenePos().toPoint()).normalized())
self.currentQRubberBand.show()
def mouseReleaseEvent(self, event):
print(self.items)
self.currentQRubberBand.hide()
self.currentQRect = self.currentQRubberBand.geometry()
print(self.currentQRect)
我的问题是矩形显示在笔记本电脑的屏幕上,但坐标正常(场景坐标) 如何在不改变 self.currentQRect 值的情况下正确地在场景中绘制橡皮筋?
【问题讨论】:
标签: python pyqt pyqt5 qgraphicsview qgraphicsscene