如何將參數傳遞給wxPython中的事件處理函數?在wxPython中處理事件
這裏是我的代碼:
def close_handler(event):
baz(foo)
...
foo = 'bar'
frame.Bind(wx.EVT_CLOSE, close_handler)
如何通過富到close_handler()
功能?
如何將參數傳遞給wxPython中的事件處理函數?在wxPython中處理事件
這裏是我的代碼:
def close_handler(event):
baz(foo)
...
foo = 'bar'
frame.Bind(wx.EVT_CLOSE, close_handler)
如何通過富到close_handler()
功能?
有close_handler
創建使用foo
第二個事件處理函數:
def close_handler(foo):
return lambda event: baz(foo)
foo = 'bar'
frame.Bind(wx.EVT_CLOSE, close_handler(foo))
這裏lambda event: baz(foo)
是匿名函數調用baz(foo)
,默默地丟棄event
說法。或者,如果您想要,您可以將它傳遞給baz
:lambda event: baz(foo, event)
。
你也可以寫本,而無需使用lambda
像這樣:
def close_handler(foo):
def event_handler(event):
return baz(foo)
return event_handler
import functools
def close_handler(event, foo):
baz(foo)
foo = 'bar'
func = functools.partial(close_handler, foo=foo)
frame.Bind(wx.EVT_CLOSE, func)
或節省一些空間:
import functools
def close_handler(event, foo):
baz(foo)
frame.Bind(wx.EVT_CLOSE, functools.partial(close_handler, foo='bar'))