我正在使用wxHaskell編寫應用程序,我希望能夠檢測按鈕的狀態(不管它是否在任何給定時間被按下)。然而,我在確定如何做到這一點時遇到了一些麻煩。首先,我認爲可能會有一個「按鈕被按下」的屬性,我可以使用,但似乎沒有。然後,我有想要維持一個IORef
,我更新了按鈕和按鈕事件。但是,這將需要Button
對象實際上有按鈕事件和按鈕事件,這是不會出現的。這是一個Commanding
的實例,但我認爲command
事件僅在按鈕上觸發,這對於這個想法來說是不夠的。有沒有人有任何其他建議?wxHaskell按鈕狀態
0
A
回答
1
解決方法
可以通過檢測觸發這些事件(如鼠標鍵,空格鍵向下)的低級別的操作自己實現。
在WX您可以使用下面的功能和構造:
mouse :: Reactive w => Event w (EventMouse -> IO())
data EventMouse = ... | MouseLeftDown !Point !Modifiers
而且,正如你建議,你可以保持自己的狀態,在IORef
。我的懷疑是,這裏的左邊的按鈕意味着主要按鈕(右手爲左手用戶)。
UI設計原則
第二個問題,你還沒問由我來回答,是,這是否是好的UI設計。
一個按鈕的行爲(使用鼠標假設相互作用)是,當用戶在按鈕區域釋放鼠標按鍵後向下按壓在同一區域中的鼠標按鈕點擊事件報告。如果用戶移開並釋放,或按下「Escape」,則不會發生點擊。
對正在按下的按鈕(未點擊)採取任何操作會讓用戶感到不自然。
在實際應用中,使用這將是,恕我直言,所採取的措施,其效果可以只有釋放後見證和唯一可以接受的辦法是立即撤消如果點擊取消(即鼠標左鍵釋放按鈕區域外)。
編輯:請同時考慮到具有輔助功能要求的用戶可能會啓用操作系統設置,以影響報告按鈕點擊的方式和時間(但不是向下/向上鼠標事件)。
0
無法知道wxButton
是否被按下,因爲它是有意隱藏此實現細節的按鈕的抽象。如果您需要知道按鈕狀態,請改爲使用wxToggleButton。
相關問題
- 1. flex3按鈕狀態
- 2. 按鈕選中狀態Android?
- 3. sharedpreferences不讀按鈕狀態
- 4. GWT按鈕狀態問題
- 5. 引導按鈕狀態
- 6. 3狀態切換按鈕?
- 7. 保持狀態按鈕Android
- 8. 更改按鈕狀態OnClick
- 9. 鼠標按鈕狀態
- 10. 按鈕事件和狀態
- 11. Android按鈕默認狀態
- 12. 保存按鈕狀態
- 13. 更改按鈕的狀態
- 14. Android切換按鈕狀態
- 15. Jquery按鈕默認狀態
- 16. 更改按鈕狀態(MVC)
- 17. 保存按鈕狀態android
- 18. CSS DRY按鈕狀態
- 19. Gtk3 Css按鈕狀態
- 20. iPhone按鈕選中狀態
- 21. 按鈕狀態更改
- 22. Windows Phone 7按鈕狀態
- 23. 按鈕看它的狀態
- 24. 處理按鈕狀態
- 25. 保存按鈕的狀態
- 26. CSS按鈕禁用狀態?
- 27. Android按鈕狀態文件
- 28. Jquery按鈕活動狀態
- 29. 按鈕狀態不更新
- 30. 保存按鈕狀態