Pitone

Come usare PyQt QTimer

Come usare PyQt QTimer
La classe QTimer della libreria PyQt consente agli utenti di creare un orologio digitale, un contatore del tempo, una barra di avanzamento e altro. Questa classe viene utilizzata per creare un normale timer che invia un segnale quando il timer si attiva ed eredita dal QOggetto classe. L'oggetto del QTimer la classe viene creata come figlia di un widget. Quando il widget viene eliminato, viene eliminato anche l'oggetto timer. Il QTimer fornisce una funzione statica chiamata colpo singolo() che può essere utilizzato per chiamare una funzione dopo un periodo specifico. Questo tutorial ti mostra come usare il QTimer classe per creare applicazioni PyQt legate al tempo.

QUtilizzo del timer

Le sezioni seguenti forniscono esempi che illustrano come implementare due diverse applicazioni utilizzando la classe QTimer.

Esempio 1: creare un cronometro

Il seguente script implementerà un'applicazione cronometro in Python usando la classe QTimer. Questa applicazione conterà il numero di secondi e il numero di minuti. Due pulsanti vengono utilizzati per avviare, arrestare, riprendere e azzerare il contatore. Quando l'utente fa clic su Inizio il pulsante , il contatore inizierà a contare e la didascalia del Inizio il pulsante verrà cambiato in Fermare. Quando l'utente fa clic su Inizio pulsante con la didascalia Fermare, il contatore si fermerà temporaneamente e la didascalia del Inizio il pulsante verrà cambiato in Curriculum vitae per continuare il contatore alla prossima volta. Quando l'utente fa clic su Ripristina pulsante, tutti i valori del contatore verranno inizializzati a 0.

# Importa i moduli necessari
sistema di importazione
da PyQt5.Importazione QtWidgets *
da PyQt5.Importazione QtCore *
# Definisci la classe per creare il cronometro
classe StopWatchWindow(QMainWindow):
def __init__(self):
# Chiama il costruttore genitore
super().__dentro__()
# Imposta il titolo della finestra
se stesso.setWindowTitle("Cronometro usando QTimer")
# Imposta la geometria per la finestra
se stesso.impostaGeometria(100, 100, 300, 200)
# Imposta le variabili necessarie
se stesso.contatore = 0
se stesso.minuto = '00'
se stesso.secondo = '00'
se stesso.conteggio = '00'
se stesso.startWatch = False
# Crea un'etichetta per visualizzare l'orologio
se stesso.etichetta = QLabel(self)
# Imposta la geometria per l'etichetta
se stesso.etichetta.setGeometria(100, 40, 150, 70)
# Crea pulsante di avvio
se stesso.start = QPushButton("Start", self)
# Imposta la geometria sul pulsante di avvio
se stesso.inizio.setGeometria(50, 120, 100, 40)
# Chiama il metodo start() quando si fa clic sul pulsante di avvio
se stesso.inizio.premuto.connettersi (auto).Inizio)
# Crea pulsante di ripristino
resetWatch = QPushButton("Reset", self)
# Imposta la geometria sul pulsante di arresto
resetGuarda.setGeometria(160, 120, 100, 40)
# Chiama il metodo reset() quando si fa clic sul pulsante di ripristino
resetGuarda.premuto.connettersi (auto).Ripristina)
# Crea oggetto timer
timer = QTimer(auto)
# Aggiungi un metodo con il timer
Timer.tempo scaduto.connettersi (auto).mostraContatore)
# Chiama il metodo start() per modificare il valore del timer
Timer.inizio(100)
# Sposta la posizione della finestra
se stesso.spostare (900, 400)
# Mostra la finestra
se stesso.mostrare()
# Definire un metodo per modificare i valori di minuti e secondi in base al valore del timer
def showCounter(self):
# Controlla il valore della variabile startWatch per avviare o fermare il cronometro
se stesso.startGuarda:
# Incrementa il contatore di 1
se stesso.contatore += 1
# Conta e imposta il valore del contatore del tempo
cnt = int((auto.contatore/10 - int(self.contatore/10))*10)
se stesso.conteggio = '0' + str(cnt)
# Imposta il secondo valore
se int(self.contatore/10) < 10 :
se stesso.secondo = '0' + str(int(self.contatore / 10))
altro:
se stesso.secondo = str(int(self.contatore / 10))
# Imposta il valore dei minuti
se stesso.contatore / 10 == 60.0 :
se stesso.secondo == '00'
se stesso.contatore = 0
min = int(auto.minuto) + 1
se min < 10 :
se stesso.minuto = '0' + str(min)
altro:
se stesso.minuto = str(min)
# Unisci i valori Mintue, Second e Count
testo = sé.minuto + ':' + auto.secondo + ':' + auto.contare
# Visualizza i valori del cronometro nell'etichetta
se stesso.etichetta.setText('

' + testo + '

')
# Definisci il metodo per gestire il pulsante di avvio
def Inizio(auto):
# Imposta la didascalia del pulsante di avvio in base alla didascalia precedente
se stesso.inizio.text() == 'Stop':
se stesso.inizio.setText('Riprendi')
se stesso.startWatch = False
altro:
# Making startWatch to true
se stesso.startWatch = True
se stesso.inizio.setText('Stop')
# Definisci il metodo per gestire il pulsante di ripristino
def Reimposta (auto):
se stesso.startWatch = False
# Reimposta tutte le variabili del contatore
se stesso.contatore = 0
se stesso.minuto = '00'
se stesso.secondo = '00'
se stesso.conteggio = '00'
# Imposta i valori iniziali per il cronometro
se stesso.etichetta.setText(str(self.contatore))
# Crea un oggetto app ed esegui l'app
app = QApplication(sys.argomento)
stopWt = StopWatchWindow()
app.exec()

La seguente finestra apparirà dopo l'esecuzione dello script sopra.

Il cronometro inizierà a funzionare dopo che l'utente fa clic su Inizio pulsante.

Il contatore smetterà di contare dopo che l'utente ha fatto clic su Fermare pulsante.

Esempio 2: creare un orologio digitale

Il seguente script implementerà un orologio digitale in Python usando il QTimer classe. Lo script visualizzerà l'orologio digitale in un'etichetta leggendo l'ora di sistema corrente una volta al secondo.

# Importa i moduli necessari
sistema di importazione
da PyQt5.QtWidgets importa QApplication, QWidget, QLabel, QVBoxLayout
da PyQt5.Importazione QtCore QTimer, QTime, Qt
da PyQt5.Importazione QtGui QFont
# Definisci la classe per creare l'orologio digitale
classe DigitalClock (QWidget):
def __init__(self):
super().__dentro__()
# Crea un'etichetta con carattere e allineamento
se stesso.lblTimer = QLabel()
font = QFont('Times', 50)
se stesso.lblTimer.setFont(carattere)
se stesso.lblTimer.setAlignment(Qt.Allinea al centro)
# Crea l'oggetto layout vartical
v_layout = QVBoxLayout()
v_layout.addWidget(self.lblTimer)
se stesso.setLayout(v_layout)
# Crea l'oggetto timer e chiama i metodi necessari per visualizzare l'orologio
timer = QTimer(auto)
Timer.tempo scaduto.connettersi (auto).mostraOrologio)
Timer.inizio(1000)
# Imposta il titolo della finestra
se stesso.setWindowTitle("Orologio digitale con QTimer")
# Ridimensiona la finestra
se stesso.ridimensiona (270, 120)
# Sposta la posizione della finestra
se stesso.spostare (800, 400)
# Metodo di chiamata per visualizzare l'ora
se stesso.mostraOrologio()
# Mostra la finestra
se stesso.mostrare()
def showClock(self):
# Leggi l'ora corrente
Current_Time = QTime.ora attuale()
# Visualizza l'orologio digitale
se stesso.lblTimer.setText('

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

')
# Crea un oggetto app ed esegui l'app
app = QApplication(sys.argomento)
vittoria = Orologio digitale()
app.exec()

La seguente finestra di output apparirà dopo l'esecuzione dello script sopra.

Conclusione

Il valore di data e ora dell'ora di sistema corrente può essere letto in vari modi utilizzando la classe QTimer della libreria PyQt. La classe QTimer è stata utilizzata in questo tutorial per eseguire vari script di esempio relativi al tempo.

I migliori giochi da riga di comando per Linux
La riga di comando non è solo il tuo più grande alleato quando usi Linux, ma può anche essere una fonte di intrattenimento perché puoi usarla per gioc...
Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...
Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...