GUI涉及到挺多的狀態(tài)改變 , 以前一直用 if...else 來判斷 , 最近讀了設(shè)計(jì)模式 ,發(fā)現(xiàn)有個(gè)狀態(tài)模式 , 隨后發(fā)現(xiàn)了狀態(tài)機(jī)這個(gè)東西 .
python的狀態(tài)機(jī)模塊挺多的 , 不過好像很多都不更新了.
推薦2個(gè)狀態(tài)機(jī)模塊 , 但是也沒有太深入的使用經(jīng)驗(yàn) , 就跑跑例子 , 以后有更詳細(xì)的pyqt例子再補(bǔ)上 .
1: pip install python-statemachine
官方例子 : https://github.com/fgmacedo/python-statemachine
2.pip install state_machine
官方例子 : https://github.com/jtushman/state_machine
1的 最近一次更新在6個(gè)月以前 , 使用類繼承和mixin方式 , 不過有些地方不如2個(gè)人性化;
2的設(shè)計(jì)更人性化一些 , 包括狀態(tài)改變before和 after , 不過由于是裝飾器實(shí)現(xiàn)的動(dòng)態(tài)增加屬性 , 有些地方編輯器智能提示可能就靠不上了.
兩者實(shí)現(xiàn)實(shí)現(xiàn)方式不一樣 , 有興趣可以讀讀源碼 .