Python

Comment utiliser PyQt QTimer

Comment utiliser PyQt QTimer
La classe QTimer de la bibliothèque PyQt permet aux utilisateurs de créer une horloge numérique, un compteur de temps, une barre de progression, etc. Cette classe est utilisée pour créer un temporisateur régulier qui envoie un signal lorsque le temporisateur se déclenche et il hérite du QObjet classer. L'objet de la QTimer la classe est créée en tant qu'enfant d'un widget. Lorsque le widget est supprimé, l'objet minuteur supprime également. le QTimer La classe fournit une fonction statique appelée coup unique() qui peut être utilisé pour appeler une fonction après une période spécifique. Ce tutoriel vous montre comment utiliser le QTimer classe pour créer des applications PyQt liées au temps.

Utilisation du QTimer

Les sections suivantes fournissent des exemples qui illustrent comment implémenter deux applications différentes à l'aide de la classe QTimer.

Exemple 1 : créer un chronomètre

Le script suivant implémentera une application de chronomètre en Python à l'aide de la classe QTimer. Cette application comptera le nombre de secondes et le nombre de minutes. Deux boutons sont utilisés pour démarrer, arrêter, reprendre et réinitialiser le compteur. Lorsque l'utilisateur clique sur le Démarrer bouton, le compteur commencera à compter, et la légende du Démarrer le bouton sera remplacé par Arrêter. Lorsque l'utilisateur clique sur le Démarrer bouton avec la légende Arrêter, le compteur s'arrêtera temporairement, et la légende du Démarrer le bouton sera remplacé par Reprendre pour continuer le compteur jusqu'à la prochaine fois. Lorsque l'utilisateur clique sur le Réinitialiser bouton, toutes les valeurs du compteur seront initialisées à 0.

# Importez les modules nécessaires
importer le système
de PyQt5.Importation de QtWidgets *
de PyQt5.Importation QtCore *
# Définir la classe pour créer le chronomètre
classe StopWatchWindow(QMainWindow):
def __init__(self):
# Appeler le constructeur parent
super().__init__()
# Définir le titre de la fenêtre
soi.setWindowTitle("Stop Watch en utilisant QTimer")
# Définir la géométrie de la fenêtre
soi.setGeometry(100, 100, 300, 200)
# Définir les variables nécessaires
soi.compteur = 0
soi.minute = '00'
soi.seconde = '00'
soi.compte = '00'
soi.startWatch = Faux
# Créer une étiquette pour afficher la montre
soi.label = QLabel(auto)
# Définir la géométrie pour l'étiquette
soi.étiqueter.setGeometry(100, 40, 150, 70)
# Créer un bouton de démarrage
soi.start = QPushButton("Démarrer", soi)
# Définir la géométrie sur le bouton de démarrage
soi.démarrer.setGeometry (50, 120, 100, 40)
# Appelez la méthode start() lorsque vous cliquez sur le bouton de démarrage
soi.démarrer.pressé.se connecter (se.Démarrer)
# Créer un bouton de réinitialisation
resetWatch = QPushButton("Reset", self)
# Définir la géométrie sur le bouton d'arrêt
réinitialiserRegarder.setGeometry(160, 120, 100, 40)
# Appelez la méthode reset() lorsque vous cliquez sur le bouton de réinitialisation
réinitialiserRegarder.pressé.se connecter (se.Réinitialiser)
# Créer un objet de minuterie
timer = QTimer(self)
# Ajouter une méthode avec le timer
minuteur.temps libre.se connecter (se.showCounter)
# Appelez la méthode start() pour modifier la valeur du timer
minuteur.début (100)
# Déplacer la position de la fenêtre
soi.déplacer (900, 400)
# Afficher la fenêtre
soi.spectacle()
# Définir une méthode pour modifier les valeurs des minutes et des secondes en fonction de la valeur du timer
def showCounter(self):
# Vérifiez la valeur de la variable startWatch pour démarrer ou arrêter le Stop Watch
si soi.startRegardez :
# Incrémenter le compteur de 1
soi.compteur += 1
# Compter et définir la valeur du compteur de temps
cnt = int((self.counter/10 - int(self.compteur/10))*10)
soi.compte = '0' + str(cnt)
# Définir la deuxième valeur
si int(soi.compteur/10) < 10 :
soi.seconde = '0' + str(int(self.compteur / 10))
autre:
soi.seconde = str(int(self.compteur / 10))
# Définir la valeur des minutes
si soi.compteur / 10 == 60.0 :
soi.seconde == '00'
soi.compteur = 0
min = int(soi.minute) + 1
si min < 10 :
soi.minute = '0' + str(min)
autre:
soi.minute = str(min)
# Fusionner les valeurs mintue, seconde et count
texte = soi.minute + ':' + soi.seconde + ':' + soi.compter
# Afficher les valeurs du chronomètre dans l'étiquette
soi.étiqueter.Définir le texte('

' + texte + '

')
# Définir la méthode pour gérer le bouton de démarrage
def Start(self):
# Définir la légende du bouton de démarrage en fonction de la légende précédente
si soi.démarrer.text() == 'Arrêter' :
soi.démarrer.setText('Reprendre')
soi.startWatch = Faux
autre:
# faire startWatch to true
soi.startWatch = True
soi.démarrer.setText('Stop')
# Définir la méthode pour gérer le bouton de réinitialisation
def Réinitialiser (auto):
soi.startWatch = Faux
# Réinitialiser toutes les variables de compteur
soi.compteur = 0
soi.minute = '00'
soi.seconde = '00'
soi.compte = '00'
# Définir les valeurs initiales du chronomètre
soi.étiqueter.setText(str(self.compteur))
# Créer un objet d'application et exécuter l'application
app = QApplication(sys.argv)
stopWt = StopWatchWindow()
application.exec()

La fenêtre suivante apparaîtra après l'exécution du script ci-dessus.

Le chronomètre commencera à fonctionner après que l'utilisateur aura cliqué sur le Démarrer bouton.

Le compteur s'arrêtera de compter après que l'utilisateur aura cliqué sur le Arrêter bouton.

Exemple 2 : créer une horloge numérique

Le script suivant implémentera une horloge numérique en Python en utilisant le QTimer classer. Le script affichera l'horloge numérique dans une étiquette en lisant l'heure actuelle du système une fois par seconde.

# Importez les modules nécessaires
importer le système
de PyQt5.QtWidgets importent QApplication, QWidget, QLabel, QVBoxLayout
de PyQt5.QtCore importe QTimer, QTime, Qt
de PyQt5.QtGui importer QFont
# Définir la classe pour créer l'horloge numérique
classe DigitalClock(QWidget):
def __init__(self):
super().__init__()
# Créer une étiquette avec police et alignement
soi.lblTimer = QLabel()
font = QFont('Times', 50)
soi.lblTimer.setFont(police)
soi.lblTimer.setAlignment(Qt.AlignCenter)
# Créer l'objet de mise en page vartical
v_layout = QVBoxLayout()
v_layout.addWidget(self.lblTimer)
soi.setLayout(v_layout)
# Créez l'objet timer et appelez les méthodes nécessaires pour afficher l'horloge
timer = QTimer(self)
minuteur.temps libre.se connecter (se.montreHorloge)
minuteur.début(1000)
# Définir le titre de la fenêtre
soi.setWindowTitle("Horloge numérique utilisant QTimer")
# Redimensionner la fenêtre
soi.redimensionner (270, 120)
# Déplacer la position de la fenêtre
soi.déplacer (800, 400)
# Méthode d'appel pour afficher l'heure
soi.montreHorloge()
# Afficher la fenêtre
soi.spectacle()
def showClock(self):
# Lire l'heure actuelle
Current_Time = QTime.heure actuelle()
# Afficher l'horloge numérique
soi.lblTimer.Définir le texte('

' + Heure_Actuelle.toString('hh:mm:ss AP') + '

')
# Créer un objet d'application et exécuter l'application
app = QApplication(sys.argv)
gagner = DigitalClock()
application.exec()

La fenêtre de sortie suivante apparaîtra après l'exécution du script ci-dessus.

Conclusion

La valeur de date et d'heure de l'heure système actuelle peut être lue de différentes manières à l'aide de la classe QTimer de la bibliothèque PyQt. La classe QTimer a été utilisée dans ce tutoriel pour exécuter divers exemples de scripts liés au temps.

Ajoutez des gestes de souris à Windows 10 à l'aide de ces outils gratuits
Ces dernières années, les ordinateurs et les systèmes d'exploitation ont considérablement évolué. Il fut un temps où les utilisateurs devaient utilise...
Contrôlez et gérez le mouvement de la souris entre plusieurs moniteurs dans Windows 10
Gestionnaire de souris à double affichage vous permet de contrôler et de configurer le mouvement de la souris entre plusieurs moniteurs, en ralentissa...
WinMouse vous permet de personnaliser et d'améliorer le mouvement du pointeur de la souris sur un PC Windows
Si vous souhaitez améliorer les fonctions par défaut de votre pointeur de souris, utilisez un logiciel gratuit WinMouse. Il ajoute plus de fonctionnal...