获取触发事件的小部件?

rec*_*gle 9 python events tkinter widget

在Tkinter中,我有一个绑定到鼠标左键的多个小部件.它们都会在单击时触发相同的事件.

如何恢复单击的窗口小部件?

我想要它,所以当说Label2按下时,我能够恢复那个Label2被触发的事件中按下的小部件.

小智 14

def f(event):
    caller = event.widget
Run Code Online (Sandbox Code Playgroud)


Bry*_*ley 12

你有几个选择.一种方法是访问widget事件对象的属性.另一种方法是将对象引用传递给您的函数.这是一个使用其中一个的示例.

import Tkinter as tk

def onClickA(event):
    print "you clicked on", event.widget
    event.widget.config(text="Thank you!")


def onClickB(event, obj):
    print "you clicked on", obj
    obj.config(text="Thank you!")

root = tk.Tk()
l1 = tk.Label(root, text="Click me")
l2 = tk.Label(root, text="No, click me!")
l1.pack()
l2.pack()

l1.bind("<1>", onClickA)
l2.bind("<1>", lambda event, obj=l2: onClickB(event, obj))

root.mainloop()
Run Code Online (Sandbox Code Playgroud)