GUI涉及到挺多的状态改变 , 以前一直用 if...else 来判断 , 最近读了设计模式 ,发现有个状态模式 , 随后发现了状态机这个东西 .
python的状态机模块挺多的 , 不过好像很多都不更新了.
推荐2个状态机模块 , 但是也没有太深入的使用经验 , 就跑跑例子 , 以后有更详细的pyqt例子再补上 .
1: pip install python-statemachine
官方例子 : https://github.com/fgmacedo/python-statemachine
2.pip install state_machine
官方例子 : https://github.com/jtushman/state_machine
1的 最近一次更新在6个月以前 , 使用类继承
和mixin
方式 , 不过有些地方不如2个人性化;
2的设计更人性化一些 , 包括状态改变before
和 after
, 不过由于是装饰器实现的动态增加属性 , 有些地方编辑器智能提示可能就靠不上了.
两者实现实现方式不一样 , 有兴趣可以读读源码 .