From f0ffaa39c845bc4452cadb0cc79b22fb8bfd607a Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 20 Nov 2023 09:31:03 +0100 Subject: Update the clock example Port qtbase/619ec1a6406a8be7bfa9d96b9e693e7a3323d8dc to our QWindow example. Pick-to: 6.5 Task-number: QTBUG-118871 Task-number: PYSIDE-2206 Change-Id: Ib8ab8bf6f415b31d1493b3ea21f2c93aca4ed13d Reviewed-by: Adrian Herrmann (cherry picked from commit 2673c5b6ce1b766aab87d6c93cec95056bf34d43) Reviewed-by: Qt Cherry-pick Bot --- examples/gui/analogclock/main.py | 80 ++++++++++++++++++++++++---------------- 1 file 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__": -- cgit v1.2.3