我目前正在将一个小型应用程序从PyGTK移植到位于系统托盘中的PySide,并定期检查服务器是否有更新。
最初编写此代码时,我使用了一个自定义状态模型来表示其行为:
从那以后,我发现Qt具有QStateMachine,它对于这种类型的结构似乎很完美。但是,我无法令人满意地将示例应用于我的问题!
特别是:
非常感谢任何指针!
行。Pyside.QtCore.Signal
是信号和插槽导数。
至于你的问题
我想说存在没有差别QEvent
和Signal
在QStateMachine的情况下(虽然QEvent
和信号和槽是完全不同的概念)。根据您的需要,您可以使用QEvent
或触发转换Signal
。请参阅QAbstactTransition
以获取开箱即用的转换列表:
继承者:QSignalTransition,QEventTransition,QMouseEventTransition,QKeyEventTransition
同样,根据您的应用程序内部发生的情况,您的错误可能是发出信号QObject
或您可以发送(发布)custom QEvent
。你需要实现自定义的QEvent
和/或定制QEventTransition
只在触发转换的事件。
这又取决于:)过渡是胶水。它具有有关源和目标状态的知识。因此,我只将准备代码放在其中onTransition()
,将状态初始化代码放在其中onEnter()
。同样,将更改状态的代码放入内部似乎对我来说是错误的onTransition()
,如您所展示的示例:
def onTransition(self, e):
x = e.arguments()[0]
fac = self.fact.fac
self.fact.fac = x * fac
self.fact.x = x - 1
但正如您所见,它运作良好。
注意:如果您有iOS经验,则UIStoryboardSegue
可以进行过渡。主要用于在UIView
,即UI状态之间传递数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句