Python Tkinter one callback function for two buttons

前端 未结 1 1364
时光说笑
时光说笑 2021-01-06 10:21

I have been looking around for a long time for answers to this question but still hasn\'t find anything. I am creating a GUI using Tkinter, and I have two buttons that do mo

相关标签:
1条回答
  • 2021-01-06 11:18

    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.

    0 讨论(0)
提交回复
热议问题