Python Tkinter one callback function for two buttons
If you want to pass the actual widget into the callback, you can do it like this:
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))
Another choice is to simply pass in a literal string if you don't really need a reference to the widget:
button1 = Button(..., command=lambda widget="button1": DoSomething(widget))button2 = Button(..., command=lambda widget="button2": DoSomething(widget))
Another choice is to give each button a unique callback, and have that callback do only the thing that is unique to that button:
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): ...
There are other ways to solve the same problem, but hopefully this will give you the general idea of how to pass values to a button callback, or how you can avoid needing to do that in the first place.