PyQt5 QOpenGLWidget空闲问题

2024-09-25 10:29:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用PyQt5,在使用QOpenGLWidget时遇到了一些困难。问题是在QOpenGLWidget中绘制任何内容的唯一方法是使用其paintGL()方法,该方法似乎已被破坏。下面是这样的:一旦程序启动,小部件会自动刷新4次并停止。使其再次工作的唯一方法是更改活动窗口(将其切换到终端或任何东西),然后它将绘制两个下一帧。把窗户调回-得到下2帧-依此类推。有人知道那里发生了什么吗?或者如何避免这个问题?在


Tags: 方法程序终端内容部件绘制pyqt5窗户
1条回答
网友
1楼 · 发布于 2024-09-25 10:29:33

我通过创建一个BasicTimer对象来解决这个问题,该对象通过deafult绑定到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

相关问题 更多 >