2024-09-25 10:29:33 发布
网友
我正在使用PyQt5,在使用QOpenGLWidget时遇到了一些困难。问题是在QOpenGLWidget中绘制任何内容的唯一方法是使用其paintGL()方法,该方法似乎已被破坏。下面是这样的:一旦程序启动,小部件会自动刷新4次并停止。使其再次工作的唯一方法是更改活动窗口(将其切换到终端或任何东西),然后它将绘制两个下一帧。把窗户调回-得到下2帧-依此类推。有人知道那里发生了什么吗?或者如何避免这个问题?在
我通过创建一个BasicTimer对象来解决这个问题,该对象通过deafult绑定到QOpenGLWidget.timerEvent()方法。在运行每个计时器的timerEvent方法中,我然后调用update()方法让小部件刷新自己。下面是一个代码片段,可以让您大致了解:
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
我通过创建一个
BasicTimer
对象来解决这个问题,该对象通过deafult绑定到QOpenGLWidget.timerEvent()
方法。在运行每个计时器的timerEvent
方法中,我然后调用update()
方法让小部件刷新自己。下面是一个代码片段,可以让您大致了解:相关问题 更多 >
编程相关推荐