我试图使用python 2.7.5在wxPython应用程序中解耦GUI和Logic。由于wxPython使用事件绑定,我认为我扩展了这种方法。总结我的代码:
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中实现这样的语法?
答案 0 :(得分:3)
您可以尝试使用lambda函数:
interface.BindEvent_DoSomething(lambda event: someLogicClass.DoSomething())
答案 1 :(得分:1)
您可以使用lambda函数
interface.BindEvent_DoSomething(lambda e: doSomething())