2017-10-09 3 views
1

Je crée un programme en python et j'utilise pyqt. Je travaille actuellement avec le QTimer et je veux imprimer "timer" toutes les secondes et arrêter l'impression après 5 secondes. Voici mon code:PyQt5 QTimer compte jusqu'à des secondes spécifiques

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

La classe 'QTimer' ne prend pas en charge l'arrêt après un nombre fixe de délais. Vous devrez garder un compte et l'arrêter explicitement. – ekhumoro

+0

Pouvez-vous s'il vous plaît faire une démo pour moi? Je ne suis qu'un débutant. – Jaypee

Répondre

0

Ci-dessous une démo simple montrant comment créer un temporisateur qui s'arrête après un nombre fixe de temporisations.

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

Woah! C'est ce que j'ai cherché. Merci, mon pote! – Jaypee