≡ Menu

Un orologio analogico in PyQT6

Lo scopo del codice è quello di realizzare un orologio analogico in Python, usando le librerie di PyQt6.

Iniziamo dal semplice schema realizzato con QT Designer, in cui c’è solo una QLabel (label_clock) che occupa l’intero QWidget. Su tale label stamperemo, ogni secondo, l’orario. Salviamo lo schema (clock.ui) e procediamo ad editare il codice di controllo.

La struttura iniziale del file è la seguente:

#!/usr/bin/python
from PyQt6.QtWidgets import QApplication, QWidget
from PyQt6 import uic
from PyQt6.QtCore import QTimer, QTime, Qt
import sys

class AppClock(QWidget):
    def __init__(self):
        super().__init__()
        
        uic.loadUi('clock.ui', self)
        self.setFixedSize(540, 164)

app = QApplication(sys.argv)
window = AppClock()
window.show()
app.exec()

Iniziamo a popolare il codice scrivendo il metodo della classe AppClock che stamperà nella label_clock l’orario corrente:

def displayTime(self):
        currentTime = QTime.currentTime()
        displayText = currentTime.toString('hh:mm:ss')
        self.label_clock.setText(displayText) #
  • memorizziamo l’orario corrente in currentTime;
  • scegliamo il formato da visualizzare e memorizziamolo in displayText;
  • stampiamo la variabile displayText nella label_clock.

Costruiamo, ora, l’oggetto timer che si occuperà di richiamare la funzione currentTime ogni secondo:

# timer is a instance of QTimer
        timer = QTimer(self)
        timer.timeout.connect(self.displayTime)
        timer.start(1000) #1 second

Il progetto completo può essere scaricato da qui.

{ 0 comments… add one }

Rispondi