Как настроить PyQt5 Qtimer для обновления через указанный интервал?

Я хотел бы обновить Qtimer в соответствии с частотой кадров 15 кадров в секунду, поэтому мой 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()

person Frederik Petri    schedule 28.11.2019    source источник
comment
За исключением вычисления интервала (интервалы QTimer устанавливаются в миллисекундах, поэтому они должны быть 1000/15), это правильный подход.   -  person musicamante    schedule 28.11.2019


Ответы (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_()
person eyllanesc    schedule 28.11.2019