如何返回基于Python的TKinter中按下的按钮实例

时间:2012-06-05 03:29:56

标签: python tkinter

按下按钮时,我正在尝试访问Tkinter中按钮的标签。这涉及返回对按下的目标按钮的引用。

目前,由于我必须输入参数,这是通过将command选项绑定到lambda函数来完成的,即

button['command'] = lambda: fun_to_call(arg)

有没有办法返回实例?我检查了TKDocs并没有覆盖。另外,我尝试使用单独的字符串列表来获取标签。但是,它只返回列表的最后一个元素(我相信这是由于lambda函数在创建按钮实例时没有将特定元素绑定到列表。我之前使用此列表生成按钮列表。)< / p>

简而言之,一个基于事件的函数绑定到返回其父级的按钮(按下按钮)。

1 个答案:

答案 0 :(得分:3)

def add_callback(control, fun):
    def inner():
        return fun(control)
    control['command'] = inner

...

def test_callback(button):
    print "button instance:", button

b = Button(text="click me")
add_callback(b, test_callback)

更具说明性:

def with_callback(control, fun):
    def inner():
        return fun(control)
    control['command'] = inner
    return control

...
b = with_callback(Button(text="click me"), test_callback)