diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-11-20 09:31:03 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-11-20 21:39:15 +0000 |
commit | 43ea9d456c5215078309300740873b5d7722645f (patch) | |
tree | 795fc5669c5661c34866bf990078e7eebaca85ca | |
parent | c4e0836a7f68df9d83a81e9a9ecbdcec73fa94d2 (diff) |
Update the clock example
Port qtbase/619ec1a6406a8be7bfa9d96b9e693e7a3323d8dc to our
QWindow example.
Task-number: QTBUG-118871
Task-number: PYSIDE-2206
Change-Id: Ib8ab8bf6f415b31d1493b3ea21f2c93aca4ed13d
Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
(cherry picked from commit 2673c5b6ce1b766aab87d6c93cec95056bf34d43)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit f0ffaa39c845bc4452cadb0cc79b22fb8bfd607a)
-rw-r--r-- | examples/gui/analogclock/main.py | 80 |
1 files changed, 48 insertions, 32 deletions
diff --git a/examples/gui/analogclock/main.py b/examples/gui/analogclock/main.py index 12303cd1d..7a5064a6e 100644 --- a/examples/gui/analogclock/main.py +++ b/examples/gui/analogclock/main.py @@ -5,7 +5,7 @@ import sys from PySide6.QtCore import QPoint, QTimer, QTime, Qt from PySide6.QtGui import (QColor, QGradient, QGuiApplication, QPainter, - QPolygon, QRasterWindow) + QPalette, QPolygon, QRasterWindow) """Simplified PySide6 port of the gui/analogclock example from Qt v6.x""" @@ -21,53 +21,69 @@ class AnalogClockWindow(QRasterWindow): self._timer.timeout.connect(self.update) self._timer.start(1000) - self._hour_hand = QPolygon([QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40)]) - self._minute_hand = QPolygon([QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70)]) + self._hour_hand = QPolygon([QPoint(5, 14), QPoint(-5, 14), + QPoint(-4, -71), QPoint(4, -71)]) + self._minute_hand = QPolygon([QPoint(4, 14), QPoint(-4, 14), + QPoint(-3, -89), QPoint(3, -89)]) + self._seconds_hand = QPolygon([QPoint(1, 14), QPoint(-1, 14), + QPoint(-1, -89), QPoint(1, -89)]) - self._hour_color = QColor(127, 0, 127) - self._minute_color = QColor(0, 127, 127, 191) + palette = qApp.palette() + self._background_color = palette.color(QPalette.Window) + self._hour_color = palette.color(QPalette.Text) + self._minute_color = palette.color(QPalette.Text) + self._seconds_color = palette.color(QPalette.Accent) def paintEvent(self, e): - with QPainter(self) as p: - self.render(p) + with QPainter(self) as painter: + self.render(painter) - def render(self, p): + def render(self, painter): width = self.width() height = self.height() - p.fillRect(0, 0, width, height, QGradient.NightFade) - - p.setRenderHint(QPainter.Antialiasing) - p.translate(width / 2, height / 2) side = min(width, height) - p.scale(side / 200.0, side / 200.0) - p.setPen(Qt.NoPen) - p.setBrush(self._hour_color) + + painter.fillRect(0, 0, width, height, self._background_color) + painter.setRenderHint(QPainter.Antialiasing) + painter.translate(width / 2, height / 2) + painter.scale(side / 200.0, side / 200.0) + time = QTime.currentTime() - p.save() - p.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) - p.drawConvexPolygon(self._hour_hand) - p.restore() - p.setPen(self._hour_color) + painter.setPen(Qt.NoPen) + painter.setBrush(self._hour_color) + + painter.save() + painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) + painter.drawConvexPolygon(self._hour_hand) + painter.restore() for i in range(0, 12): - p.drawLine(88, 0, 96, 0) - p.rotate(30.0) + painter.drawRect(73, -3, 16, 6) + painter.rotate(30.0) + + painter.setBrush(self._minute_color) + + painter.save() + painter.rotate(6.0 * time.minute()) + painter.drawConvexPolygon(self._minute_hand) + painter.restore() + + painter.setBrush(self._seconds_color) - p.setPen(Qt.NoPen) - p.setBrush(self._minute_color) + painter.save() + painter.rotate(6.0 * time.second()) + painter.drawConvexPolygon(self._seconds_hand) + painter.drawEllipse(-3, -3, 6, 6) + painter.drawEllipse(-5, -68, 10, 10) + painter.restore() - p.save() - p.rotate(6.0 * (time.minute() + time.second() / 60.0)) - p.drawConvexPolygon(self._minute_hand) - p.restore() - p.setPen(self._minute_color) + painter.setPen(self._minute_color) for j in range(0, 60): - if (j % 5) != 0: - p.drawLine(92, 0, 96, 0) - p.rotate(6.0) + painter.drawLine(92, 0, 96, 0) + painter.rotate(6.0) if __name__ == "__main__": |