from PySide6.QtStateMachine import QStateMachine,QState,QFinalState
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
class Form(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.init_ui()
def init_ui(self):
self.btn = QPushButton('btn',self)
self.btn.move(100,100)
self.btn2 = QPushButton('btn2', self)
self.btn2.move(100, 200)
machine = QStateMachine(self)
#创建状态
additionState:QState = QState(machine)
multiplictionState:QState = QState(machine)
outputState:QFinalState = QFinalState(machine)
#设置行为
additionState.assignProperty(machine,"result",5+3)
multiplictionState.assignProperty(machine,"result",5*3)
#添加转换关系
add=additionState.addTransition(self.btn.clicked,multiplictionState)
mul=multiplictionState.addTransition(self.btn2.clicked,additionState)
#设置初状态
machine.setInitialState(additionState)
#连接转换信号
# machine.finished.connect(lambda :print(machine.property("result")))
add.triggered.connect(lambda :print(machine.property("result")))
mul.triggered.connect(lambda :print(machine.property("result"))
)
machine.start()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = Form()
win.show()
sys.exit(app.exec())