PyQT5 OpenGL zoom - PullRequest
       11

PyQT5 OpenGL zoom

0 голосов
/ 22 ноября 2018

Итак, я хотел сделать функцию масштабирования в 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, но не увеличивает и не увеличивает.

1 Ответ

0 голосов
/ 22 ноября 2018

Получил ответ.Это работает.resizeGL обновляется только при изменении размера окна, поэтому мы должны использовать его в другом методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...