如何将QGraphicsView缩放恢复至100%,即程序启动时的缩放比例?
问题描述:
所以,到目前为止,我有这样的代码:如何将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_()
它产生这个窗口最初打开,如:
不过后者我可以放大,如:
然后,我想有一个重置缩放按钮,将缩放设置为默认缩放时,该程序打开:
但按钮我有现在只拟合可见部分的全屏幕,而不是恢复原来的缩放,鼠标缩放滚动后:
答
重置索引则必须重新改造:
{your_graphicsview}.setTransform(QtGui.QTransform())