2017-01-09 36 views
1

我有一個問題,正確使用QStateMachine - 系統PyQt5在運行時使用帶有動態值的QState.assignProperty

使用

State.assignProperty(aLineEdit, "plainText", "Some text") 

允許設置"Some text"plainText -property每當aState是活動的。

問題:如果"Some text"在執行前不是恆定的或已知的,該怎麼辦?我的意圖是傳遞一個函數(與將partiallambda表達式連接到事件不同),而不是在輸入狀態時產生適當值的值。

我唯一的想法是模擬這種行爲是連接一個函數,該屬性設置爲aState.entered。但是我對這個解決方案並不滿意,因爲它混合了設置屬性的地方,並且使用QStateMachine的理由是爲了避免自己手動設置狀態。

+1

不會動態屬性破壞狀態機的邏輯嗎?如果一個屬性可以是'A'或'B',那麼這似乎意味着兩種不同的狀態。 – ekhumoro

+0

@ekhumoro人們可以說我現在是如何定義屬性的狀態(例如通過方法表示),當相應的機器狀態處於活動狀態時。無論如何,我只希望(d)有一種更靈活的方式來使用狀態機。 – aisen

+0

靈活性由'enter'和'exit'信號提供。 – ekhumoro

回答

0

你唯一的想法是正確的,但你應該將它分解成一個輔助方法,以便在輸入狀態時調用該函數。

相關問題