2014-01-07 78 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())