2014-01-07 80 views
0

我想在使用python 2.7.5的wxPython應用程序中解耦GUI和邏輯。由於wxPython使用事件綁定,我認爲我會擴展這種方法。總結我的代碼:Python 2.7.5中的匿名回調函數?

GUI.py

class MainInterface(): 
    def __SetupControlPanel(self, controlPanel): 
     self.DoSomethingButton = wx.Button(controlPanel, wx.ID_ANY, "Do something") 

    def BindCallback_DoSomething(self, callback): 
     self.frame.Bind(wx.EVT_BUTTON, callback, self.DoSomethingButton) 

main.py

def DoSomething(event): 
    someLogicClass.DoSomething() 

interface.BindEvent_DoSomething(DoSomething) 

這樣可以使應用程序的兩個部分很好,但我不喜歡我的定義方式每個回調函數在main.py中都有一個單獨的函數,因爲它通常只調用一個邏輯函數。從JS背景中,我習慣於能夠使用匿名函數。我想像這樣的事情會令我的代碼有些更緊湊:

interface.BindEvent_DoSomething(def (event): 
    someLogicClass.DoSomething() 
) 

有沒有辦法在Python實現這樣的語法?

+1

lambda函數? – M4rtini

+1

您是否搜索過「蟒蛇匿名函數」? – Blender

+0

我有,但沒有我找到的lambda函數示例顯示,有可能簡單地調用一個方法...猜我錯過了它。謝謝。 – Korijn

回答

1

可以使用lambda函數

interface.BindEvent_DoSomething(lambda e: doSomething()) 
3

您可以用lambda函數嘗試:

interface.BindEvent_DoSomething(lambda event: someLogicClass.DoSomething())