首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将参数传递给tkinter中的事件处理程序?

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

Stack Overflow用户
提问于 2010-07-21 14:51:56
回答 4查看 47.8K关注 0票数 33
widget.bind('<Button-1>',callback)   # binding 

def callback(self,event)
    #do something

我需要向callback()传递一个参数。该参数是一个字典对象。

EN

回答 4

Stack Overflow用户

发布于 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)
票数 58
EN

Stack Overflow用户

发布于 2010-07-21 15:08:03

关于

import functools
def callback(self, event, param):
    pass
arg = 123
widget.bind("", functools.partial(callback, param=arg))
票数 13
EN

Stack Overflow用户

发布于 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解决方案也很好。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3296893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档