我正在使用20个按钮,当点击任何一个按钮时,我正在调用“btn_click”功能。是否可以通过该功能知道按钮名称(按下哪个按钮)。请查看下面的代码片段。
t=['one','two','three','four','five','six','seven','untill to twenty']
for i in range(1,20):
obj=Button(root1,text=t[i],command=btn_click,width=27)
obj.grid(row=i,column=0,sticky=W,padx=15,pady=15)
答案 0 :(得分:1)
您可以将按钮名称作为参数传递给回调函数。
def btn_click(button_name):
print button_name
然后你可以创建一个lambda
,将当前名称传递给回调。
t = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'untill to twenty']
for i, x in enumerate(t):
obj = Button(root1, text=x, command=lambda name=x: btn_click(name), width=27)
obj.grid(row=i, column=0, sticky=W, padx=15, pady=15)
但请注意lambda
can behave unexpectedly when used inside a loop,因此name=x
默认参数。或者改为使用functools.partial
:
obj = Button(root1, text=x, command=functools.partial(btn_click, x), width=27)