widget.bind('<Button-1>',callback) # binding
def callback(self,event)
#do something
我需要向callback()
传递一个参数。该参数是一个字典对象。
发布于 2010-07-21 19:20:54
您可以使用lambda
来定义匿名函数,例如:
data={"one": 1, "two": 2}
widget.bind("<ButtonPress-1>", lambda event, arg=data: self.on_mouse_down(event, arg))
请注意,传入的arg
只是一个普通参数,您可以像使用所有其他参数一样使用它:
def on_mouse_down(self, event, arg):
print(arg)
发布于 2010-07-21 15:08:03
关于
import functools
def callback(self, event, param):
pass
arg = 123
widget.bind("", functools.partial(callback, param=arg))
发布于 2010-07-21 15:51:58
我认为在大多数情况下,回调不需要任何参数,因为回调可以是一个可以访问实例成员的实例方法:
from Tkinter import *
class MyObj:
def __init__(self, arg):
self.arg = arg
def callback(self, event):
print self.arg
obj = MyObj('I am Obj')
root = Tk()
btn=Button(root, text="Click")
btn.bind('<Button-1>', obj.callback)
btn.pack()
root.mainloop()
但我认为Philipp提出的functools解决方案也很好。
https://stackoverflow.com/questions/3296893
复制相似问题