【发布时间】:2018-11-22 10:55:53
【问题描述】:
所以我想在 PyQT 中做一个缩放功能。从答案8.040 我实现它是这样的:
class GLWindow(QOpenGLWidget):
def __init__(self, parent=None):
super(GLWindow, self).__init__(parent)
self.object = 0
self.zoomFactor = 1.0
self.setFocusPolicy(Qt.WheelFocus)
self.lastPos = QPoint()
和
def resizeGL(self, width, height):
gl.glViewport(0, 0, width, height)
gl.glMatrixMode(gl.GL_PROJECTION)
gl.glLoadIdentity()
gl.glOrtho(-2 * self.zoomFactor, +2 * self.zoomFactor, +2 * self.zoomFactor, -2 * self.zoomFactor, 4.0, 15.0)
gl.glMatrixMode(gl.GL_MODELVIEW)
现在在程序开始时,如果我将 self.zoomFactor 更改为 2.0,它具有所需的缩放效果,但我似乎无法在运行时调整它的大小。
def wheelEvent(self, event):
"""http://doc.qt.io/qt-5/qwheelevent.html"""
scroll = event.angleDelta()
if scroll.y() > 0: # up
self.zoomFactor += 0.1
self.resizeGL(self.width(), self.height())
self.update()
pass
else: # down
pass
上面的代码是我已经尝试过的,没有达到预期的效果。它捕捉到向上的缩放并调用resizeGL 函数,但不会放大/缩小。
【问题讨论】:
标签: python python-3.x opengl pyqt pyqt5