Python

Hoe PyQt QTimer te gebruiken

Hoe PyQt QTimer te gebruiken
Met de QTimer-klasse van de PyQt-bibliotheek kunnen gebruikers een digitale klok, tijdteller, voortgangsbalk en meer maken. Deze klasse wordt gebruikt om een ​​reguliere timer te maken die een signaal uitzendt wanneer de timer afgaat en deze erft van de QObject klasse. Het object van de QTimer klasse wordt gemaakt als een kind van een widget. Wanneer de widget wordt verwijderd, wordt ook het timerobject verwijderd. De QTimer class biedt een statische functie genaamd enkel schot() die kan worden gebruikt om een ​​functie aan te roepen na een bepaalde periode. Deze tutorial laat je zien hoe je de QTimer class om tijdgerelateerde PyQt-toepassingen te maken.

QTimergebruik

De volgende secties bevatten voorbeelden die illustreren hoe twee verschillende toepassingen kunnen worden geïmplementeerd met behulp van de QTimer-klasse.

Voorbeeld 1: Maak een stopwatch

Het volgende script implementeert een stopwatch-toepassing in Python met behulp van de QTimer-klasse. Deze applicatie telt het aantal seconden en het aantal minuten. Er worden twee knoppen gebruikt om de teller te starten, te stoppen, te hervatten en te resetten. Wanneer de gebruiker op de . klikt Begin knop, begint de teller te tellen en het bijschrift van de Begin knop wordt gewijzigd in Hou op. Wanneer de gebruiker op de . klikt Begin knop met het bijschrift: Hou op, de teller stopt tijdelijk, en het bijschrift van de Begin knop wordt gewijzigd in Hervat om door te gaan met de teller naar de volgende keer. Wanneer de gebruiker op de . klikt Resetten knop, worden alle waarden van de teller geïnitialiseerd op 0.

# Importeer benodigde modules
import systeem
van PyQt5.QtWidgets importeren *
van PyQt5.QtCore-import *
# Definieer klasse om de stopwatch te maken
klasse StopWatchWindow(QMainWindow):
def __init__(zelf):
# Bel de bovenliggende constructor
super().__in het__()
# Stel de titel van het venster in
zelf.setWindowTitle("Stop Watch met QTimer")
# Stel de geometrie voor het venster in
zelf.setGeometrie(100, 100, 300, 200)
# Stel de benodigde variabelen in
zelf.teller = 0
zelf.minuut = '00'
zelf.seconde = '00'
zelf.aantal = '00'
zelf.startWatch = False
# Maak een label om het horloge weer te geven
zelf.label = QLabel(zelf)
# Stel geometrie in voor het label
zelf.etiket.setGeometrie(100, 40, 150, 70)
# Startknop maken
zelf.start = QPushButton("Start", zelf)
# Stel geometrie in op de startknop
zelf.begin.setGeometry(50, 120, 100, 40)
# Roep de start()-methode aan wanneer op de startknop wordt geklikt
zelf.begin.ingedrukt.verbinden (zelf).Begin)
# Maak een resetknop
resetWatch = QPushButton ("Reset", zelf)
# Stel geometrie in op de stopknop
resetWatch.setGeometrie(160, 120, 100, 40)
# Roep de reset()-methode aan wanneer op de reset-knop wordt geklikt
resetWatch.ingedrukt.verbinden (zelf).resetten)
# Timerobject maken
timer = QTimer (zelf)
# Voeg een methode toe met de timer
tijdopnemer.time-out.verbinden (zelf).toonteller)
# Roep de methode start() aan om de timerwaarde te wijzigen
tijdopnemer.begin(100)
# Verplaats de positie van het venster
zelf.verplaatsen(900, 400)
# Geef het venster weer
zelf.tonen()
# Definieer een methode om de waarden van minuten en seconden te wijzigen op basis van de timerwaarde
def showCounter(zelf):
# Controleer de waarde van de startWatch-variabele om de stopwatch te starten of te stoppen
als zelf.startWatch:
# Verhoog de teller met 1
zelf.teller += 1
# Tel en stel de tijdtellerwaarde in
cnt = int((zelf.teller/10 - int(zelf.teller/10))*10)
zelf.telling = '0' + str(cnt)
# Stel de tweede waarde in
if int (zelf.teller/10) < 10 :
zelf.seconde = '0' + str(int(zelf.teller / 10))
anders:
zelf.tweede = str(int(zelf).teller / 10))
# Stel de minuutwaarde in
als zelf.teller / 10 == 60.0 :
zelf.seconde == '00'
zelf.teller = 0
min = int(zelf.minuut) + 1
als min < 10 :
zelf.minuut = '0' + str(min)
anders:
zelf.minuut = str(min)
# Voeg de munt-, seconde- en telwaarden samen
tekst = zelf.minuut + ':' + zelf.tweede + ':' + zelf.tellen
# Toon de stopwatch-waarden in het label
zelf.etiket.setText('

' + tekst + '

')
# Definieer de methode om met de startknop om te gaan
def Start(zelf):
# Stel het bijschrift van de startknop in op basis van het vorige bijschrift
als zelf.begin.text() == 'Stoppen':
zelf.begin.setText('Hervatten')
zelf.startWatch = False
anders:
# startWatch naar true maken
zelf.startWatch = True
zelf.begin.setText('Stop')
# Definieer de methode om met de resetknop om te gaan
def Reset(zelf):
zelf.startWatch = False
# Reset alle tellervariabelen
zelf.teller = 0
zelf.minuut = '00'
zelf.seconde = '00'
zelf.aantal = '00'
# Stel de beginwaarden voor de stopwatch in
zelf.etiket.setText(str(zelf.teller))
# Maak een app-object en voer de app uit
app = QApplicatie(sys.argv)
stopWt = StopWatchWindow()
app.exec()

Het volgende venster verschijnt nadat het bovenstaande script is uitgevoerd:.

De stopwatch begint te werken nadat de gebruiker op de . heeft geklikt Begin knop.

De teller stopt met tellen nadat de gebruiker op de . heeft geklikt Hou op knop.

Voorbeeld 2: Maak een digitale klok

Het volgende script implementeert een digitale klok in Python met behulp van de QTimer klasse. Het script zal de digitale klok in een label weergeven door de huidige systeemtijd elke seconde te lezen.

# Importeer benodigde modules
import systeem
van PyQt5.QtWidgets importeert QApplication, QWidget, QLabel, QVBoxLayout
van PyQt5.QtCore importeert QTimer, QTime, Qt
van PyQt5.QtGui QFont importeren
# Definieer klasse om de digitale klok te maken
klasse DigitalClock (QWidget):
def __init__(zelf):
super().__in het__()
# Maak een label met lettertype en uitlijning
zelf.lblTimer = QLabel()
lettertype = QFont('Times', 50)
zelf.lblTimer.setFont(lettertype)
zelf.lblTimer.setAlignment(Qt.Tekst in het midden uitlijnen)
# Maak het variabele lay-outobject
v_layout = QVBoxLayout()
v_layout.addWidget(zelf).lblTimer)
zelf.setLayout(v_layout)
# Maak het timerobject en roep de benodigde methoden aan om de klok weer te geven
timer = QTimer (zelf)
tijdopnemer.time-out.verbinden (zelf).toonKlok)
tijdopnemer.begin(1000)
# Stel de titel van het venster in
zelf.setWindowTitle("Digitale klok met behulp van QTimer")
# Formaat van het venster wijzigen
zelf.formaat wijzigen(270, 120)
# Verplaats de positie van het venster
zelf.verplaatsen(800, 400)
# Oproepmethode om de tijd weer te geven
zelf.showClock()
# Geef het venster weer
zelf.tonen()
def showClock(zelf):
# Lees de huidige tijd
Current_Time = QTime.huidige tijd()
# Geef de digitale klok weer
zelf.lblTimer.setText('

' + Huidige_Tijd.toString('uu:mm:ss AP') + '

')
# Maak een app-object en voer de app uit
app = QApplicatie(sys.argv)
win = Digitale Klok()
app.exec()

Het volgende uitvoervenster verschijnt nadat het bovenstaande script is uitgevoerd:.

Conclusie

De datum- en tijdwaarde van de huidige systeemtijd kan op verschillende manieren worden gelezen met behulp van de QTimer-klasse van de PyQt-bibliotheek. De klasse QTimer werd in deze zelfstudie gebruikt om verschillende voorbeelden van tijdgerelateerde scripts uit te voeren.

Emuleer muisklikken door te zweven met Clickless Mouse in Windows 10
Het gebruik van een muis of toetsenbord in de verkeerde houding of overmatig gebruik kan leiden tot veel gezondheidsproblemen, waaronder spanning, car...
Voeg muisbewegingen toe aan Windows 10 met deze gratis tools
In de afgelopen jaren zijn computers en besturingssystemen sterk geëvolueerd. Er was een tijd dat gebruikers opdrachten moesten gebruiken om door best...
Beheer en beheer muisbewegingen tussen meerdere monitoren in Windows 10
Muisbeheer voor twee schermen laat je muisbewegingen tussen meerdere monitoren controleren en configureren door de bewegingen nabij de grens te vertra...