PyQt5 QOpenGLWidget空闲问题



我正在使用PyQt5,并且使用QOpenGLWidget有一些困难。问题是,在QOpenGLWidget中绘制任何东西的唯一方法是使用它的paintGL()方法,这似乎是坏的。发生的事情是这样的:一旦程序启动,小部件恰好刷新4次并停止。让它再次工作的唯一方法是改变活动窗口(将其切换到终端或任何东西),然后它绘制2下一帧。将窗口切换回来-获得下一个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

相关内容

  • 没有找到相关文章

最新更新