在 PySide 中强制 QTimer() 超时
Force QTimer() timeout in PySide
我有一个 pySide 应用程序,它使用 QTimer 每分钟刷新一次状态。在某些情况下我需要强制立即更新,然后重新启动计时器
self.timer = QTimer()
self.timer.timeout.connect(self._update_status)
self.timer.start(60 * 1000)
有什么方法可以强制定时器超时并发出超时信号?
最干净的解决方案似乎就是这样:
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)
不一定会强制 立即 更新)。
我有一个 pySide 应用程序,它使用 QTimer 每分钟刷新一次状态。在某些情况下我需要强制立即更新,然后重新启动计时器
self.timer = QTimer()
self.timer.timeout.connect(self._update_status)
self.timer.start(60 * 1000)
有什么方法可以强制定时器超时并发出超时信号?
最干净的解决方案似乎就是这样:
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)
不一定会强制 立即 更新)。