PyQt5 QOpenGLWidget 空闲问题

PyQt5 QOpenGLWidget idle issue

我正在使用 PyQt5,但在使用 QOpenGLWidget 时遇到了一些困难。问题是在 QOpenGLWidget 中绘制任何东西的唯一方法是使用它的 paintGL() 方法,这似乎被破坏了。下面是发生的情况:程序启动后,小部件会自动刷新 4 次并停止。让它再次工作的唯一方法是更改​​活动 window(将其切换到终端或任何东西),然后它会绘制 2 个下一帧。将 window 切换回来 - 获取接下来的 2 帧 - 依此类推。有谁知道那里发生了什么?或者如何避免这个问题?

我通过创建一个默认绑定到 QOpenGLWidget.timerEvent() 方法的 BasicTimer 对象解决了这个问题。在运行每个计时器滴答的 timerEvent 方法中,我然后调用 update() 方法让小部件自行刷新。下面是一段代码片段,应该可以让您大致了解:

from PyQt5.QtWidgets import QOpenGLWidget
from PyQt5.QtCore import QBasicTimer


class OpenGLWidget(QOpenGLWidget):
    def __init__(self):
        self._timer = QBasicTimer()          # creating timer
        self._timer.start(1000 / 60, self)   # setting up timer ticks to 60 fps

    def paintGL(self):
        pass                                 # some painting code here

    def timerEvent(self, QTimerEvent):
        self.update()                        # refreshing the widget