Events 在wxPython中处理事件
如何将参数传递给wxPython中的事件处理程序 这是我的密码:Events 在wxPython中处理事件,events,wxpython,Events,Wxpython,如何将参数传递给wxPython中的事件处理程序 这是我的密码: def close_handler(event): baz(foo) ... foo = 'bar' frame.Bind(wx.EVT_CLOSE, close_handler) 如何将foo传递给close\u handler()函数?让close\u handler创建第二个使用foo的事件处理函数: def close_handler(foo): return
def close_handler(event):
baz(foo)
...
foo = 'bar'
frame.Bind(wx.EVT_CLOSE, close_handler)
如何将foo传递给
close\u handler()
函数?让close\u handler
创建第二个使用foo
的事件处理函数:
def close_handler(foo):
return lambda event: baz(foo)
foo = 'bar'
frame.Bind(wx.EVT_CLOSE, close_handler(foo))
这里的lambda事件:baz(foo)
是一个匿名函数,它调用baz(foo)
,默默地丢弃事件
参数。或者,如果需要,可以将其传递给baz
:lambda事件: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)
frame.Bind(wx.EVT_CLOSE, functools.partial(close_handler, foo='bar'))
import functools
def close_handler(event, foo):
baz(foo)
frame.Bind(wx.EVT_CLOSE, functools.partial(close_handler, foo='bar'))