2010-09-22 22 views
0

這是我的理解,在OSX的wxPython中,⌘+ w支持關閉wx.Window對象。爲了添加它,我必須綁定到wx.EVT_KEY_DOWN,明確地檢查event.MetaDown()event.KeyCode == 'W'wxPython中的Command + W支持

在我的應用程序中,我需要所有的窗口和對話框支持這一點。我仍然在佈局我的GUI,但我不得不想,我想知道什麼是將這種支持輕鬆添加到現有類的最佳方式。我嘗試了多重繼承,但它似乎沒有工作(我的事件處理程序從未被調用過)。

我在想也許是一個類裝飾器,但這是由於python的動態特性,將在運行時添加的功能。所以我有點難住。

PS:我知道「最好」是主觀的,但我誠實地尋找什麼在這裏可能的工作,這不是代碼高昂量。

回答

0

我想也許一類 裝飾,但這是功能 將在運行時被添加,由於 蟒蛇的動態特性。

我不明白爲什麼這會讓你「有點難倒」。類裝飾器在class語句結束後執行 - 是的,這是「在運行時」,但clqss語句本身,其所有的def語句都在其語句中執行,等等。當你實例化任何這樣裝飾的類時,裝飾器將會運行,所以你正在實例化的類將被修飾器的代碼相應地修改。你能舉一個小例子說明爲什麼這不適合你嗎?

+0

嗯,我想我可能沒有想到這一切。由於我必須在'__init__'階段'綁定'事件處理程序,所以我基本上必須做的就是包裝'__init__'函數,並且動態地將一個方法添加到裝飾器中的類中以處理事件。讓我看看我能想出什麼。 – rossipedia 2010-09-22 17:33:45