该 assignProperty() 方法需要一个Q_PROPERTY,在PySide / PySide2的情况下等于Property(与python本身提供的属性不同),在PyQt4 / PyQt5的情况下你必须使用 pyqtProperty ,这是错误的原因所以解决方案是替换为以下:
assignProperty()
from PyQt5.QtCore import QObject, pyqtSignal, QSignalTransition, QCoreApplication, QStateMachine, QState, QFinalState, pyqtProperty class Factorial(QObject): xChanged = pyqtSignal(int) def __init__(self): super(Factorial, self).__init__() self.xval = -1 self.facval = 1 def getX(self): return self.xval def setX(self, x): if self.xval == x: return self.xval = x self.xChanged.emit(x) x = pyqtProperty(int, getX, setX) # <--- def getFact(self): return self.facval def setFact(self, fac): self.facval = fac fac = pyqtProperty(int, getFact, setFact) # <--- # ...