如何将其他参数传递给事件回调?

She*_*don 4 python wxpython

是否可以将其他参数传递给事件回调?

例如,如果我的事件绑定看起来像这样;

self.Bind(wx.EVT_BUTTON, self.do_something, self.button) 
Run Code Online (Sandbox Code Playgroud)

我怎么能把参数传递给我的方法?

self.do_something(self,event,arguments):
    """do something with arguments"""
    pass
Run Code Online (Sandbox Code Playgroud)

eca*_*mur 7

使用functools.partial,或在一般情况下使用lambda表达式.

部分形式将是

functools.partial(self.do_something, args)
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下,event参数将在参数列表的末尾传递.等效的lambda形式是:

lambda event: self.do_something(args, event)
Run Code Online (Sandbox Code Playgroud)


war*_*iuc 4

使用拉姆达:

self.Bind(wx.EVT_BUTTON, lambda event, args=args: self.do_something(event, args), self.button) 

self.do_something(self,event,arguments):
    """do something with arguments"""
    pass
Run Code Online (Sandbox Code Playgroud)