Python

Sådan bruges PyQt QTimer

Sådan bruges PyQt QTimer
QTimer-klassen i PyQt-biblioteket giver brugerne mulighed for at oprette et digitalt ur, tidstæller, statuslinje og mere. Denne klasse bruges til at oprette en almindelig timer, der sender et signal, når timeren udløses, og den arver fra QObject klasse. Formålet med QTimer klasse oprettes som et barn til en widget. Når widgeten slettes, slettes også timerobjektet. Det QTimer klasse giver en statisk funktion kaldet singleShot () der kan bruges til at ringe til en funktion efter en bestemt periode. Denne vejledning viser dig, hvordan du bruger QTimer klasse til at oprette tidsrelaterede PyQt-applikationer.

QTimer-brug

De følgende afsnit giver eksempler, der illustrerer, hvordan man implementerer to forskellige applikationer ved hjælp af QTimer-klassen.

Eksempel 1: Opret et stopur

Det følgende script implementerer et stopur-program i Python ved hjælp af QTimer-klassen. Denne applikation tæller antallet af sekunder og antallet af minutter. To knapper bruges til at starte, stoppe, genoptage og nulstille tælleren. Når brugeren klikker på Start knappen, tælleren begynder at tælle, og billedteksten på Start knappen ændres til Hold op. Når brugeren klikker på Start knap med billedteksten Hold op, tælleren stopper midlertidigt, og billedteksten på Start knappen ændres til Genoptag for at fortsætte tælleren til næste gang. Når brugeren klikker på Nulstil -knappen initialiseres alle tællerens værdier til 0.

# Importer nødvendige moduler
importer sys
fra PyQt5.Import af QtWidgets *
fra PyQt5.QtCore-import *
# Definer klasse for at oprette stopuret
klasse StopWatchWindow (QMainWindow):
def __init __ (selv):
# Ring til forældrekonstruktøren
super().__i det__()
# Indstil titlen på vinduet
selv.setWindowTitle ("Stop ur med QTimer")
# Indstil geometrien til vinduet
selv.setGeometry (100, 100, 300, 200)
# Indstil de nødvendige variabler
selv.tæller = 0
selv.minut = '00'
selv.sekund = '00'
selv.count = '00'
selv.startWatch = Falsk
# Opret etiket for at få vist uret
selv.label = QLabel (selv)
# Indstil geometri til etiketten
selv.etiket.setGeometry (100, 40, 150, 70)
# Opret startknap
selv.start = QPushButton ("Start", selv)
# Indstil geometri til startknappen
selv.Start.setGeometry (50, 120, 100, 40)
# Opkaldsstart () -metode, når der klikkes på startknappen
selv.Start.trykkes.forbinde (selv.Start)
# Opret reset-knap
resetWatch = QPushButton ("Nulstil", selv)
# Indstil geometri til stopknappen
resetWatch.setGeometry (160, 120, 100, 40)
# Opkaldsnulstillingsmetode (), når der klikkes på nulstillingsknappen
resetWatch.trykkes.forbinde (selv.Nulstil)
# Opret timer-objekt
timer = QTimer (selv)
# Tilføj en metode med timeren
timer.tiden er gået.forbinde (selv.showCounter)
# Opkaldsstart () -metode for at ændre timerværdien
timer.start (100)
# Flyt vinduespositionen
selv.flytte (900, 400)
# Vis vinduet
selv.at vise()
# Definer en metode til at ændre værdierne på minutter og sekunder baseret på timerværdien
def showCounter (selv):
# Kontroller værdien af ​​startWatch-variablen for at starte eller stoppe Stop Watch
hvis selv.startWatch:
# Forøg tæller med 1
selv.tæller + = 1
# Tæl og indstil værdi for tidstæller
cnt = int ((selv.tæller / 10 - int (selv.tæller / 10)) * 10)
selv.count = '0' + str (cnt)
# Indstil den anden værdi
hvis int (selv.tæller / 10) < 10 :
selv.sekund = '0' + str (int (selv.tæller / 10))
andet:
selv.sekund = str (int (selv.tæller / 10))
# Indstil minutværdien
hvis selv.tæller / 10 == 60.0:
selv.sekund == '00'
selv.tæller = 0
min = int (selv.minut) + 1
hvis min < 10 :
selv.minut = '0' + str (min)
andet:
selv.minut = str (min)
# Flet mintue-, sekund- og optællingsværdierne
tekst = selv.minut + ':' + selv.anden + ':' + selv.tælle
# Vis stopurets værdier i etiketten
selv.etiket.setText ('

'+ tekst +'

')
# Definer metode til at håndtere startknappen
def Start (selv):
# Indstil billedteksten på startknappen baseret på tidligere billedtekst
hvis selv.Start.tekst () == 'Stop':
selv.Start.setText ('Genoptag')
selv.startWatch = Falsk
andet:
# gør startWatch til sandt
selv.startWatch = Sandt
selv.Start.setText ('Stop')
# Definer metode til håndtering af reset-knappen
def Nulstil (selv):
selv.startWatch = Falsk
# Nulstil alle tællervariabler
selv.tæller = 0
selv.minut = '00'
selv.sekund = '00'
selv.count = '00'
# Indstil startværdierne for stopuret
selv.etiket.setText (str (selv.tæller))
# Opret app-objekt og kør appen
app = QApplication (sys.argv)
stopWt = StopWatchWindow ()
app.udføre ()

Følgende vindue vises, når ovenstående script er udført.

Stopuret begynder at virke, når brugeren klikker på Start knap.

Tælleren stopper med at tælle, når brugeren klikker på Hold op knap.

Eksempel 2: Opret et digitalt ur

Det følgende script implementerer et digitalt ur i Python ved hjælp af QTimer klasse. Scriptet viser det digitale ur i en etiket ved at læse den aktuelle systemtid en gang hvert sekund.

# Importer nødvendige moduler
importer sys
fra PyQt5.QtWidgets importerer QApplication, QWidget, QLabel, QVBoxLayout
fra PyQt5.QtCore importerer QTimer, QTime, Qt
fra PyQt5.QtGui import QFont
# Definer klasse for at oprette det digitale ur
klasse DigitalClock (QWidget):
def __init __ (selv):
super().__i det__()
# Opret en etiket med skrifttype og justering
selv.lblTimer = QLabel ()
font = QFont ('Times', 50)
selv.lblTimer.setFont (skrifttype)
selv.lblTimer.setAlignment (Qt.AlignCenter)
# Opret det vertikale layoutobjekt
v_layout = QVBoxLayout ()
v_layout.addWidget (selv.lblTimer)
selv.setLayout (v_layout)
# Opret timerobjektet, og kald de nødvendige metoder til at vise uret
timer = QTimer (selv)
timer.tiden er gået.forbinde (selv.showClock)
timer.start (1000)
# Indstil titlen på vinduet
selv.setWindowTitle ("Digital ur ved hjælp af QTimer")
# Ændr størrelsen på vinduet
selv.ændre størrelse (270, 120)
# Flyt vinduespositionen
selv.flyt (800, 400)
# Opkaldsmetode for at vise klokkeslættet
selv.showClock ()
# Vis vinduet
selv.at vise()
def showClock (selv):
# Læs den aktuelle tid
Current_Time = QTime.nuværende tid()
# Vis det digitale ur
selv.lblTimer.setText ('

'+ Nuværende_tid.toString ('tt: mm: ss AP') + '

')
# Opret app-objekt og kør appen
app = QApplication (sys.argv)
vinde = DigitalClock ()
app.udføre ()

Følgende outputvindue vises, når ovenstående script er udført.

Konklusion

Dato og klokkeslæt for det aktuelle systemtid kan læses på forskellige måder ved hjælp af QTimer-klassen i PyQt-biblioteket. QTimer-klassen blev brugt i denne vejledning til at udføre forskellige eksempler på tidsrelaterede scripts.

Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...
Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...
OpenTTD vs Simutrans
Oprettelse af din egen transportsimulering kan være sjovt, afslappende og ekstremt lokkende. Derfor skal du sørge for at prøve så mange spil som mulig...