fromPyQt4importQtGui,QtCoreclassMyFrame(QtGui.QGraphicsView):"""
Python PyQt: How can I move my widgets on the window with mouse?
https://stackoverflow.com/questions/12213391/python-pyqt-how-can-i-move-my-widgets-on-the-window-with-mouse
"""def__init__(self,parent=None):super(MyFrame,self).__init__(parent)scene=QtGui.QGraphicsScene()self.setScene(scene)self.resize(400,340)# http://pyqt.sourceforge.net/Docs/PyQt4/qpen.htmlpencil=QtGui.QPen(QtCore.Qt.black,1)pencil.setStyle(QtCore.Qt.SolidLine)scene.addLine(QtCore.QLineF(0,-50,0,50),pencil)scene.addLine(QtCore.QLineF(-50,0,50,0),pencil)fitInViewButton=QtGui.QPushButton('Fit In View',self)fitInViewButton.clicked.connect(self.handleFitInView)scene.addWidget(fitInViewButton)defhandleFitInView(self):# Auto scale a QGraphicsView# http://www.qtcentre.org/threads/42917-Auto-scale-a-QGraphicsViewself.ensureVisible(self.scene().itemsBoundingRect())self.fitInView(self.scene().itemsBoundingRect(),QtCore.Qt.KeepAspectRatio)defwheelEvent(self,event):"""
PyQT4 WheelEvent? how to detect if the wheel have been use?
https://stackoverflow.com/questions/9475772/pyqt4-wheelevent-how-to-detect-if-the-wheel-have-been-use
QGraphicsView Zooming in and out under mouse position using mouse wheel
https://stackoverflow.com/questions/19113532/qgraphicsview-zooming-in-and-out-under-mouse-position-using-mouse-wheel
"""# Zoom FactorzoomInFactor=1.1zoomOutFactor=1/zoomInFactor# Set Anchorsself.setTransformationAnchor(QtGui.QGraphicsView.NoAnchor)self.setResizeAnchor(QtGui.QGraphicsView.NoAnchor)# Save the scene posoldPos=self.mapToScene(event.pos())# Zoomifevent.delta()>0:zoomFactor=zoomInFactorelse:zoomFactor=zoomOutFactor
self.scale(zoomFactor,zoomFactor)# Get the new positionnewPos=self.mapToScene(event.pos())# Move scene to old positiondelta=newPos-oldPos
self.translate(delta.x(),delta.y())if(__name__=='__main__'):app=QtGui.QApplication([])f=MyFrame()f.show()app.exec_()