如何将参数传递给tkinter中的事件处理程序?

sag*_*sag 25 python events binding arguments tkinter

widget.bind('<Button-1>',callback)   # binding 

def callback(self,event)
    #do something
Run Code Online (Sandbox Code Playgroud)

我需要传递一个论点callback().参数是一个字典对象.

Bry*_*ley 44

您可以使用它lambda来定义匿名函数,例如:

data={"one": 1, "two": 2}

widget.bind("<ButtonPress-1>", lambda event, arg=data: self.on_mouse_down(event, arg))
Run Code Online (Sandbox Code Playgroud)

请注意,arg传入的只是一个普通的参数,您可以像使用其他所有参数一样使用它:

def on_mouse_down(self, event, arg):
    print(arg)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢布莱恩。这十分完美 。 (2认同)

Phi*_*ipp 10

关于什么

import functools
def callback(self, event, param):
    pass
arg = 123
widget.bind("", functools.partial(callback, param=arg))
Run Code Online (Sandbox Code Playgroud)