PyQt5 QOpenGLWidget空闲问题

时间:2015-09-06 21:55:14

标签: python qt qt5 pyqt5

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

1 个答案:

答案 0 :(得分:1)

我通过创建BasicTimer对象来解决问题,该对象与QOpenGLWidget.timerEvent()方法相关。在运行每个计时器的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