如果你想将实际的小部件传递到回调中,你可以这样做:
button1 = Button(master, text='Search')
button1.configure(command=lambda widget=button1: DoSomething(widget))
button2 = Button(master, text='Search')
button2.configure(command=lambda widget=button2: DoSomething(widget))
如果您确实不需要对小部件的引用,另一种选择是简单地传递文字字符串:
button1 = Button(..., command=lambda widget="button1": DoSomething(widget))
button2 = Button(..., command=lambda widget="button2": DoSomething(widget))
另一种选择是为每个按钮提供唯一的回调,并让该回调仅执行该按钮特有的操作:
button1 = Button(..., command=ButtonOneCallback)
button2 = Button(..., command=ButtonTwoCallback)
def ButtonOneCallback():
value = user_input.get()
DoSomething(value)
def ButtonTwoCallback():
value=choice.get(choice.curselection()[0])
DoSomething(value)
def DoSomething(value):
...
还有其他方法可以解决相同的问题,但希望这能让您大致了解如何将值传递给按钮回调,或者如何避免首先需要这样做。