1
所以,到目前爲止,我有這樣的代碼:如何將QGraphicsView縮放恢復至100%,即程序啓動時的縮放比例?
from PyQt4 import QtGui, QtCore
class MyFrame(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.html
pencil = 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)
def handleFitInView(self):
# Auto scale a QGraphicsView
# http://www.qtcentre.org/threads/42917-Auto-scale-a-QGraphicsView
self.ensureVisible (self.scene().itemsBoundingRect())
self.fitInView(self.scene().itemsBoundingRect(), QtCore.Qt.KeepAspectRatio)
def wheelEvent(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 Factor
zoomInFactor = 1.1
zoomOutFactor = 1/zoomInFactor
# Set Anchors
self.setTransformationAnchor(QtGui.QGraphicsView.NoAnchor)
self.setResizeAnchor(QtGui.QGraphicsView.NoAnchor)
# Save the scene pos
oldPos = self.mapToScene(event.pos())
# Zoom
if event.delta() > 0:
zoomFactor = zoomInFactor
else:
zoomFactor = zoomOutFactor
self.scale(zoomFactor, zoomFactor)
# Get the new position
newPos = self.mapToScene(event.pos())
# Move scene to old position
delta = newPos - oldPos
self.translate(delta.x(), delta.y())
if (__name__ == '__main__'):
app = QtGui.QApplication([])
f = MyFrame()
f.show()
app.exec_()
它產生這個窗口最初打開,如:
不過後者我可以放大,如:
然後,我想有一個重置縮放按鈕,將縮放設置爲默認縮放時,該程序打開:
但按鈕我有現在只擬合可見部分的全屏幕,而不是恢復原來的縮放,鼠標縮放滾動後: