Get Button Text

James Logajan JamesL at Lugoj.com
Sun Apr 7 20:19:01 EDT 2002


Kevin Doyle <doyle at acrossthebigpond.com> wrote:
> I have code that creates x amount of Buttons on the fly.  Each buttons 
> will have a unique Text displayed on it.
> 
> I want to be able to get the text vale of the button when it is pressed.
> 
> I also want to know is it possible to create just one function and bind 
> this one function to all the buttons, and call the function with a 
> reference to the button clicked as an argument.

The secret is the use of lambda to define the command (there is another 
way, but this has worked for me). Try this; hopefully it will become clear.

#-----------------------
from Tkinter import *

buttonWidgets = []
buttonLabels = [ "OK", "Cancel", "Whatever" ]

def YourFunctionCall(button_text):
    print "You pressed ", button_text
    # Just for the heck of it, delete the button pressed.
    buttonLabels.remove(button_text)
    UpdateButtons()

def UpdateButtons():
    global buttonWidgets
    global root
    for button in buttonWidgets:
        button.destroy()
    buttonWidgets = []
    for buttonLabel in buttonLabels:
        button = Button(root, text = buttonLabel, command =
                    lambda txt = buttonLabel: YourFunctionCall(txt))
        button.pack(side = LEFT)
        buttonWidgets.append(button)

root = Frame()
root.pack()
UpdateButtons()
root.mainloop()



More information about the Python-list mailing list