如何设置 PyQt5 Qtimer 在指定的时间间隔内更新?

Posted

技术标签:

【中文标题】如何设置 PyQt5 Qtimer 在指定的时间间隔内更新?【英文标题】:How to set PyQt5 Qtimer to update in specified interval? 【发布时间】:2019-11-28 17:55:51 【问题描述】:

我想根据 15 FPS 的帧速率更新 Qtimer - 所以我的 def update(): 每 0,06 秒接收一个信号。你能帮助我吗?我在下面附上了一个代码示例,其中我的 setInterval 输入是 1/15,但我不知道这是否是要走的路。谢谢。

from PyQt5 import QtCore

def update():
    print('hey')

fps = 15
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.setInterval(1/fps)
timer.start()

【问题讨论】:

除了间隔计算(QTimer间隔以毫秒为单位设置,所以应该是1000/15),这才是正确的做法。 【参考方案1】:

您有以下错误:

setInterval()以毫秒为单位接收时间,因此您必须将其更改为timer.setInterval(1000/fps)

与许多 Qt 组件一样,QTimer 需要您创建 QXApplication 并启动事件循环,在这种情况下,一个 QCoreApplication 就足够了。

import sys

from PyQt5 import QtCore


def update():
    print("hey")


if __name__ == "__main__":

    app = QtCore.QCoreApplication(sys.argv)

    fps = 15
    timer = QtCore.QTimer()
    timer.timeout.connect(update)
    timer.setInterval(1000 / fps)
    timer.start()

    app.exec_()

【讨论】:

以上是关于如何设置 PyQt5 Qtimer 在指定的时间间隔内更新?的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5:最小化窗口后 QTimer 不同步(OSX)

PyQt5系列教程定时器QTimer的使用

七.PyQt5定时器QTimer的使用

QTimer 不调用该方法来为绘图设置动画

pyqt5如何计时?

PyQt5 按钮点击动画