diff options
Diffstat (limited to 'examples/widgets/state-machine/factstates/factstates.py')
-rw-r--r-- | examples/widgets/state-machine/factstates/factstates.py | 13 |
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) |