aboutsummaryrefslogtreecommitdiffstats
path: root/examples/widgets/state-machine/factstates/factstates.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/state-machine/factstates/factstates.py')
-rw-r--r--examples/widgets/state-machine/factstates/factstates.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/examples/widgets/state-machine/factstates/factstates.py b/examples/widgets/state-machine/factstates/factstates.py
index 47cf4d841..053e89908 100644
--- a/examples/widgets/state-machine/factstates/factstates.py
+++ b/examples/widgets/state-machine/factstates/factstates.py
@@ -48,49 +48,62 @@ from PySide6.QtStateMachine import (QFinalState, QSignalTransition, QState,
class Factorial(QObject):
x_changed = Signal(int)
+
def __init__(self):
super().__init__()
self.xval = -1
self.facval = 1
+
def get_x(self):
return self.xval
+
def set_x(self, x):
if self.xval == x:
return
self.xval = x
self.x_changed.emit(x)
x = Property(int, get_x, set_x)
+
def get_fact(self):
return self.facval
+
def set_fact(self, fac):
self.facval = fac
+
fac = Property(int, get_fact, set_fact)
+
class FactorialLoopTransition(QSignalTransition):
def __init__(self, fact):
super().__init__(fact, SIGNAL('x_changed(int)'))
self.fact = fact
+
def eventTest(self, e):
if not super(FactorialLoopTransition, self).eventTest(e):
return False
return e.arguments()[0] > 1
+
def onTransition(self, e):
x = e.arguments()[0]
fac = self.fact.fac
self.fact.fac = x * fac
self.fact.x = x - 1
+
class FactorialDoneTransition(QSignalTransition):
def __init__(self, fact):
super().__init__(fact, SIGNAL('x_changed(int)'))
self.fact = fact
+
def eventTest(self, e):
if not super(FactorialDoneTransition, self).eventTest(e):
return False
return e.arguments()[0] <= 1
+
def onTransition(self, e):
print(self.fact.fac)
+
if __name__ == '__main__':
import sys
app = QCoreApplication(sys.argv)