diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-01-08 18:21:45 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-01-11 17:03:11 +0100 |
commit | 89a65deec3a4fd6e9e843283109c70f0b2fb8a13 (patch) | |
tree | a540eb6e63e8518a1ad510b77109f4f042ef1979 /examples/widgetbinding/wigglywidget.py | |
parent | 5705cf87480f29e4e8f72bd47aaabb04466a7582 (diff) |
Prepare the wiggly widget example for use in Designer
Refactor and brush up the code to C++/Python naming conventions.
Turn text/running into properties.
Most importantly, fix it to not crash when the text initially
is empty.
Task-number: PYSIDE-1455
Task-number: PYSIDE-841
Change-Id: If94558a453b1824ba54bd4f94808ced5798b2dc3
Reviewed-by: Christian Tismer <tismer@stackless.com>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'examples/widgetbinding/wigglywidget.py')
-rw-r--r-- | examples/widgetbinding/wigglywidget.py | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/examples/widgetbinding/wigglywidget.py b/examples/widgetbinding/wigglywidget.py index 5451b2320..21a955dd1 100644 --- a/examples/widgetbinding/wigglywidget.py +++ b/examples/widgetbinding/wigglywidget.py @@ -48,7 +48,7 @@ ## ############################################################################ -from PySide6.QtCore import QBasicTimer +from PySide6.QtCore import QBasicTimer, Property from PySide6.QtGui import QColor, QFontMetrics, QPainter, QPalette from PySide6.QtWidgets import QWidget @@ -56,19 +56,31 @@ from PySide6.QtWidgets import QWidget class WigglyWidget(QWidget): def __init__(self, parent=None): super(WigglyWidget, self).__init__(parent) - self.step = 0 - self.text = "" + self._step = 0 + self._text = "" self.setBackgroundRole(QPalette.Midlight) self.setAutoFillBackground(True) - newFont = self.font() - newFont.setPointSize(newFont.pointSize() + 20) - self.setFont(newFont) + new_font = self.font() + new_font.setPointSize(new_font.pointSize() + 20) + self.setFont(new_font) + self._timer = QBasicTimer() - self.timer = QBasicTimer() - self.timer.start(60, self) + def isRunning(self): + return self._timer.isActive() + + def setRunning(self, r): + if r == self.isRunning(): + return + if r: + self._timer.start(60, self) + else: + self._timer.stop() def paintEvent(self, event): + if not self._text: + return + sineTable = [0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38] @@ -79,19 +91,26 @@ class WigglyWidget(QWidget): painter = QPainter(self) for i in range(len(self.text)): - index = (self.step + i) % 16 + index = (self._step + i) % 16 color.setHsv((15 - index) * 16, 255, 191) painter.setPen(color) - painter.drawText(x, y - ((sineTable[index] * metrics.height()) / 400), - str(self.text[i])) - x += metrics.horizontalAdvance(self.text[i]) + dy = (sineTable[index] * metrics.height()) / 400 + c = self._text[i] + painter.drawText(x, y - dy, str(c)) + x += metrics.horizontalAdvance(c) def timerEvent(self, event): - if event.timerId() == self.timer.timerId(): - self.step += 1 + if event.timerId() == self._timer.timerId(): + self._step += 1 self.update() else: QWidget.timerEvent(event) + def text(self): + return self._text + def setText(self, text): - self.text = text + self._text = text + + running = Property(bool, isRunning, setRunning) + text = Property(str, text, setText) |