如何在特定时间使用 python 和不使用 Cron 的 PyQt 获取 运行 的功能
How to get function to run at specyfic time using python and PyQt not using Cron
我正在 PyQt 中创建 RSS 应用程序,我正试图找到一种编程更新的好方法。我发现了这个 Executing periodic actions in Python 但也许有 Qt 特定的方法来做这件事。
我知道每个提要的更新周期,所以我想运行在特定时间(hh:mm) 更新。
制作一个 10 分钟的循环来检查当前时间和 运行 如果它比下一个预测的 feed 更新更晚则更新似乎错过了知道 运行 它的具体时间的要点。
您应该在 Qt 应用程序中使用 QTimer。通常你不需要关心具体的更新时间,因为目标是定期定期检查。因此最直接的方法是为每个提要创建一个计时器并设置每个计时器的更新间隔(例如 10 分钟)。
如果你出于某种原因真的想在特定时间进行更新,你可以使用类似 QDateTime::currentDateTime().msecsTo(targetTime)
的东西来计算定时器间隔,使用 QTimer::setSingleShot
使定时器成为非周期性的并设置当第一个计时器过期时另一个计时器。
timer->setTimerType(Qt::VeryCoarseTimer)
可能是合理的,因为你不需要太多的准确性,Qt 可以在某些情况下优化性能和功耗。
请注意,您通常不能使用 Python 的方法来设置计时器,因为 Qt 有自己的事件循环,并且不允许其他库 运行 在其中设置一些东西。
我正在 PyQt 中创建 RSS 应用程序,我正试图找到一种编程更新的好方法。我发现了这个 Executing periodic actions in Python 但也许有 Qt 特定的方法来做这件事。
我知道每个提要的更新周期,所以我想运行在特定时间(hh:mm) 更新。
制作一个 10 分钟的循环来检查当前时间和 运行 如果它比下一个预测的 feed 更新更晚则更新似乎错过了知道 运行 它的具体时间的要点。
您应该在 Qt 应用程序中使用 QTimer。通常你不需要关心具体的更新时间,因为目标是定期定期检查。因此最直接的方法是为每个提要创建一个计时器并设置每个计时器的更新间隔(例如 10 分钟)。
如果你出于某种原因真的想在特定时间进行更新,你可以使用类似 QDateTime::currentDateTime().msecsTo(targetTime)
的东西来计算定时器间隔,使用 QTimer::setSingleShot
使定时器成为非周期性的并设置当第一个计时器过期时另一个计时器。
timer->setTimerType(Qt::VeryCoarseTimer)
可能是合理的,因为你不需要太多的准确性,Qt 可以在某些情况下优化性能和功耗。
请注意,您通常不能使用 Python 的方法来设置计时器,因为 Qt 有自己的事件循环,并且不允许其他库 运行 在其中设置一些东西。