如何将参数传递给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'))