我目前正在将 small application 从 PyGTK 移植到 PySide,它位于您的系统托盘中并定期检查服务器是否有更新。
当我最初写这篇文章时,我使用了一个自定义状态模型来表示它的行为:
我后来发现 Qt 有 QStateMachine,它似乎非常适合这种类型的结构。但是,我无法将 examples 令人满意地应用于我的问题!
特别是:
任何指针都非常感谢!
最佳答案
好的。 Pyside.QtCore.Signal
是 Signals & Slots 衍生物。
至于你的问题
QEvent
和 Signal
没有区别(尽管 QEvent
和 Signals & Slots 是完全不同的概念)。根据您的需要,您可以使用 QEvent
或 Signal
触发转换。有关开箱即用的转换列表,请参见 QAbstactTransition
:QObject
的信号,或者您可以发送(发布)自定义 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
's 之间传递数据,即 UI 状态。关于python - QStateMachine:QEvent 和 Signal 的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19784875/