2016-07-06 13 views
1

私は、QTimerを使用して1分に1回ステータスを更新するpySideアプリケーションを使用しています。いくつかのケースでは、私はすぐに更新を強制した後、タイマーPySideで強制的にQTimer()タイムアウトを実行する

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

を再起動する必要がタイムアウト信号を期限切れにして発光するようにタイマーを強制する方法はありますか?

答えて

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)は必ずしもを即時に更新する必要はありません。

+0

timeout.emit()を使用するための最初の提案は素晴らしく、簡単です。 tnx。 – k3it

関連する問題