用状态来取代 if…else 判断。

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 的设计更人性化一些,包括状态改变 beforeafter , 不过由于是装饰器实现的动态增加属性,有些地方编辑器智能提示可能就靠不上了.

两者实现实现方式不一样,有兴趣可以读读源码 .

  1. qt 内置状态机框架

https://blog.csdn.net/amnes1a/article/details/62418196

https://blog.csdn.net/dongfenghuojian/article/details/78187131

http://blog.sina.com.cn/s/articlelist_3284623693_0_1.html (系列教程)