在PySide中强制QTimer()超时

时间:2016-07-06 04:07:10

标签: python pyqt pyside

我有一个pySide应用程序,它使用QTimer每分钟刷新一次状态。在某些情况下,我需要强制立即更新,然后重新启动计时器

self.timer = QTimer()
self.timer.timeout.connect(self._update_status)
self.timer.start(60 * 1000)

有没有办法强制计时器到期并发出超时信号?

1 个答案:

答案 0 :(得分:1)

最干净的解决方案似乎就是这样:

        self.timer.start() # restart the timer
        self.timer.timeout.emit() # force an immediate update

也可以通过调用setInterval(1)强制立即更新,但这样做的缺点是,您需要在连接到信号的插槽中重新设置> 的定时器间隔 :

        self.timer.setInterval(1) # force an immediate update

    def _update_status(self):
        ...
        if self.timer.interval() == 1:
            self.timer.setInterval(60 * 1000) # reset the interval

(注意,如果使用的间隔,Qt将仅在事件队列被清除后才发出超时信号。严格来说,setInterval(0)不一定强制立即更新。)