Python

Hvordan bruke PyQt QTimer

Hvordan bruke PyQt QTimer
QTimer-klassen i PyQt-biblioteket lar brukerne lage en digital klokke, tidteller, fremdriftslinje og mer. Denne klassen brukes til å lage en vanlig tidtaker som sender ut et signal når tidtakeren avfyres og den arver fra QObject klasse. Hensikten med QTimer klasse er opprettet som et barn av en widget. Når widgeten slettes, slettes også timerobjektet. De QTimer klasse gir en statisk funksjon kalt enkelt skudd() som kan brukes til å ringe en funksjon etter en bestemt periode. Denne veiledningen viser deg hvordan du bruker QTimer klasse for å lage tidsrelaterte PyQt-applikasjoner.

QTimer bruk

De følgende avsnittene gir eksempler som illustrerer hvordan du implementerer to forskjellige applikasjoner ved bruk av QTimer-klassen.

Eksempel 1: Lag en stoppeklokke

Følgende skript implementerer et stoppeklokke-program i Python ved bruk av QTimer-klassen. Denne applikasjonen vil telle antall sekunder og antall minutter. To knapper brukes til å starte, stoppe, gjenoppta og tilbakestille telleren. Når brukeren klikker på Start knappen, vil telleren begynne å telle, og bildeteksten på Start knappen vil bli endret til Stoppe. Når brukeren klikker på Start knapp med bildeteksten Stoppe, telleren stopper midlertidig, og bildeteksten på Start knappen vil bli endret til Gjenoppta for å fortsette telleren til neste gang. Når brukeren klikker på Nullstille knappen vil alle verdiene til telleren initialiseres til 0.

# Importer nødvendige moduler
importer sys
fra PyQt5.Import av QtWidgets *
fra PyQt5.QtCore-import *
# Definer klasse for å lage stoppuret
klasse StopWatchWindow (QMainWindow):
def __init __ (selv):
# Ring foreldrekonstruktøren
super().__i det__()
# Sett tittelen på vinduet
selv-.setWindowTitle ("Stop Watch using QTimer")
# Sett geometrien for vinduet
selv-.setGeometry (100, 100, 300, 200)
# Sett de nødvendige variablene
selv-.teller = 0
selv-.minutt = '00'
selv-.sekund = '00'
selv-.count = '00'
selv-.startWatch = Falsk
# Lag etikett for å vise klokken
selv-.label = QLabel (selv)
# Sett geometri for etiketten
selv-.merkelapp.setGeometry (100, 40, 150, 70)
# Opprett startknapp
selv-.start = QPushButton ("Start", selv)
# Sett geometri til startknappen
selv-.start.setGeometry (50, 120, 100, 40)
# Metode for anropsstart () når du klikker på startknappen
selv-.start.presset.koble (selv.Start)
# Opprett reset-knapp
resetWatch = QPushButton ("Tilbakestill", selv)
# Sett geometri til stoppknappen
resetWatch.setGeometry (160, 120, 100, 40)
# Metode for tilbakestilling av samtale () når du klikker på tilbakestillingsknappen
resetWatch.presset.koble (selv.Nullstille)
# Lag timer-objekt
timer = QTimer (selv)
# Legg til en metode med tidtakeren
timer.pause.koble (selv.showCounter)
# Anrop start () -metoden for å endre tidverdien
timer.start (100)
# Flytt vinduets posisjon
selv-.flytte (900, 400)
# Vis vinduet
selv-.vise fram()
# Definer en metode for å endre verdiene til minutter og sekunder basert på tidverdien
def showCounter (selv):
# Kontroller verdien av startWatch-variabelen for å starte eller stoppe Stop Watch
hvis selv.startWatch:
# Inkrement teller med 1
selv-.teller + = 1
# Tell og sett tidstellerverdien
cnt = int ((selvtillit).teller / 10 - int (selvtillit.teller / 10)) * 10)
selv-.count = '0' + str (cnt)
# Still inn den andre verdien
hvis int (selv.teller / 10) < 10 :
selv-.sekund = '0' + str (int (selvtill.teller / 10))
ellers:
selv-.andre = str (int (selv.teller / 10))
# Still inn minuttverdien
hvis selv.teller / 10 == 60.0:
selv-.andre == '00'
selv-.teller = 0
min = int (selv.minutt) + 1
hvis min < 10 :
selv-.minutt = '0' + str (min)
ellers:
selv-.minutt = str (min)
# Slå sammen mintue-, sekund- og telleverdiene
tekst = selvtillit.minutt + ':' + selv.andre + ':' + selv.telle
# Vis stoppurverdiene i etiketten
selv-.merkelapp.setText ('

'+ tekst +'

')
# Definer metode for å håndtere startknappen
def Start (selv):
# Sett bildeteksten til startknappen basert på forrige bildetekst
hvis selv.start.tekst () == 'Stopp':
selv-.start.setText ('Fortsett')
selv-.startWatch = Falsk
ellers:
# gjør startWatch til sant
selv-.startWatch = Sant
selv-.start.setText ('Stopp')
# Definer metode for å håndtere tilbakestillingsknappen
def Tilbakestill (selv):
selv-.startWatch = Falsk
# Tilbakestill alle tellervariablene
selv-.teller = 0
selv-.minutt = '00'
selv-.sekund = '00'
selv-.count = '00'
# Still inn startverdiene for stoppeklokken
selv-.merkelapp.setText (str (selv.disk))
# Opprett appobjekt og kjør appen
app = QApplication (sys.argv)
stopWt = StopWatchWindow ()
app.utføre ()

Følgende vindu vises etter at ovenstående skript er utført.

Stoppeklokken vil begynne å virke etter at brukeren klikker på Start knapp.

Telleren slutter å telle etter at brukeren klikker på Stoppe knapp.

Eksempel 2: Lag en digital klokke

Følgende skript implementerer en digital klokke i Python ved hjelp av QTimer klasse. Skriptet viser den digitale klokken på en etikett ved å lese gjeldende 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 importerer QFont
# Definer klasse for å lage den digitale klokken
klasse DigitalClock (QWidget):
def __init __ (selv):
super().__i det__()
# Lag en etikett med skrift og justering
selv-.lblTimer = QLabel ()
font = QFont ('Times', 50)
selv-.lblTimer.setFont (font)
selv-.lblTimer.setAlignment (Qt.AlignCenter)
# Lag det vertikale layoutobjektet
v_layout = QVBoxLayout ()
v_layout.addWidget (selvtill.lblTimer)
selv-.setLayout (v_layout)
# Lag tidsurobjektet og ring nødvendige metoder for å vise klokken
timer = QTimer (selv)
timer.pause.koble (selv.showClock)
timer.start (1000)
# Sett tittelen på vinduet
selv-.setWindowTitle ("Digital Clock using QTimer")
# Endre størrelsen på vinduet
selv-.endre størrelse (270, 120)
# Flytt vinduets posisjon
selv-.flytte (800, 400)
# Ringmetode for å vise klokkeslettet
selv-.showClock ()
# Vis vinduet
selv-.vise fram()
def showClock (selv):
# Les gjeldende tid
Current_Time = QTime.nåværende tid()
# Vis den digitale klokken
selv-.lblTimer.setText ('

'+ Nåværende_tid.toString ('tt: mm: ss AP') + '

')
# Opprett appobjekt og kjør appen
app = QApplication (sys.argv)
vinn = DigitalClock ()
app.utføre ()

Følgende utgangsvindu vises etter at skriptet ovenfor er utført.

Konklusjon

Dato og klokkeslett for gjeldende systemtid kan leses på forskjellige måter ved hjelp av QTimer-klassen i PyQt-biblioteket. QTimer-klassen ble brukt i denne opplæringen for å utføre forskjellige eksempler på tidsrelaterte skript.

Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...
Beste spill å spille med håndsporing
Oculus Quest introduserte nylig den gode ideen om håndsporing uten kontrollere. Med et stadig økende antall spill og aktiviteter som utfører støtte en...