Python Tkinter one callback function for two buttons Python Tkinter one callback function for two buttons tkinter tkinter

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.