2017-10-09 10 views
1

私はpythonでプログラムを作成していますが、pyqtを使用しています。私は現在QTimerで作業しています。私は毎秒 "timer works"を印刷し、5秒後に印刷を停止したいと考えています。ここに私のコードはあります:PyQt5 QTimerは特定の秒までカウントする

timers = [] 
def thread_func(): 
    print("Thread works") 
    timer = QtCore.QTimer() 
    timer.timeout.connect(timer_func) 
    timer.start(1000) 
    print(timer.remainingTime()) 
    print(timer.isActive()) 
    timers.append(timer) 

def timer_func(): 
    print("Timer works") 
+0

'QTimer'クラスは、固定数のタイムアウト後の停止をサポートしていません。カウントを保持し、明示的に停止する必要があります。 – ekhumoro

+0

私のデモをお願いしますか?私は初心者です。 – Jaypee

答えて

0

以下は、一定のタイムアウト後に停止するタイマーを作成する方法を示す簡単なデモです。

from PyQt5 import QtCore 

def start_timer(slot, count=1, interval=1000): 
    counter = 0 
    def handler(): 
     nonlocal counter 
     counter += 1 
     slot(counter) 
     if counter >= count: 
      timer.stop() 
      timer.deleteLater() 
    timer = QtCore.QTimer() 
    timer.timeout.connect(handler) 
    timer.start(interval) 

def timer_func(count): 
    print('Timer:', count) 
    if count >= 5: 
     QtCore.QCoreApplication.quit() 

app = QtCore.QCoreApplication([]) 
start_timer(timer_func, 5) 
app.exec_() 
+0

うわー!それは私が探していたものです。ありがとう! – Jaypee

関連する問題