aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-11-20 09:31:03 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-11-20 21:39:15 +0000
commit43ea9d456c5215078309300740873b5d7722645f (patch)
tree795fc5669c5661c34866bf990078e7eebaca85ca
parentc4e0836a7f68df9d83a81e9a9ecbdcec73fa94d2 (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.py80
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__":