2012-07-09 83 views
0

在wxpython中,最好是通過爲每個事件處理程序創建一個單獨的函數來處理事件(比如每個單擊按鈕的單獨函數)或創建一個大的button_handler,然後確定從那裏?wxpython中的事件處理

基本上,我想知道是否有更多的資源密集型需要爲每個單獨的事物觀察許多不同的事件,或者只是一個大事件,它會指出當它被觸發時點擊哪個事件。

回答

1

如果我有三個按鈕完全不同的事情,那麼我需要不同的事件處理程序,因爲我覺得更容易調試。如果它們都是應用了不同格式化選項的打印按鈕,那麼我會將它們全部掛接到同一個處理程序,並使用event.GetEventObject()來確定哪一個被調用。我有幾次有同一個處理程序處理多個事件時,我有一個工具欄按鈕和一個菜單項都調用相同的東西。它更多的與程序流程和調試的簡易性有關,只是伴隨着練習。

2

別擔心。這兩種方案所需的資源都是微不足道的,特別是在python腳本中。專注於以最容易理解和維護的方式設計代碼。

2

資源強度在這裏不是你的問題,但是你肯定會爲此使用一個大事件循環。由於全局解釋器鎖定,python中的許多事件處理程序都有惱人的處理事件隊列的方式,並且在某些事件處理程序中,甚至可能無法在不從堆棧中移除事件的情況下檢查事件(例如VPython),等等這些情況下,如果您在代碼中使用多重檢查,您可能會遇到奇怪且難以追蹤錯誤的情況。如果您使用一個大型活動,這不會發生,或者如果它發生,將更容易追蹤。

Ravenspoint是正確的,因爲任何一種方法的資源強度都是微不足道的,僅憑資源強度就不用擔心,但單個事件循環更容易維護。