Digital Clock Example#
The Digital Clock example shows how to use
QLCDNumber to display a number with LCD-like digits.
This example also demonstrates how
QTimer can be used to update a widget at regular intervals.
DigitalClock Class Definition#
DigitalClock class provides a clock widget showing the time with hours and minutes separated by a blinking colon. We subclass
QLCDNumber and implement a private slot called
showTime() to update the clock display:
class DigitalClock(QLCDNumber): Q_OBJECT # public DigitalClock(QWidget parent = None) slots: = private() def showTime():
DigitalClock Class Implementation#
def __init__(self, parent): QLCDNumber.__init__(self, parent) setSegmentStyle(Filled) timer = QTimer(self) connect(timer, QTimer.timeout, self, DigitalClock.showTime) timer.start(1000) showTime() setWindowTitle(tr("Digital Clock")) resize(150, 60)
In the constructor, we first change the look of the LCD numbers. The
Filled style produces raised segments filled with the foreground color (typically black). We also set up a one-second timer to keep track of the current time, and we connect its
timeout() signal to the private
showTime() slot so that the display is updated every second. Then, we call the
showTime() slot; without this call, there would be a one-second delay at startup before the time is shown.
def showTime(self): time = QTime.currentTime() text = time.toString("hh:mm") if ((time.second() % 2) == 0) text = ' ' display(text)
showTime() slot is called whenever the clock display needs to be updated.
The current time is converted into a string with the format “hh:mm”. When
second() is a even number, the colon in the string is replaced with a space. This makes the colon appear and vanish every other second.
Finally, we call
display() to update the widget.