How to change Tkinter label text on button press

41,580

You can make message a StringVar to make callback.

message = tkinter.StringVar()

message.set('Not pressed.')

You need to set message to be a textvariable for Instruction:

Instruction = tkinter.Label(Tk, textvariable=message, font='size, 20').pack()

and then

def press():
    message.set('Button Pressed')
Share:
41,580
Phoenix
Author by

Phoenix

Updated on October 02, 2020

Comments

  • Phoenix
    Phoenix over 3 years

    I have this code, and its meant to change the text of the Instruction label when the item button is pressed. It doesn't for some reason, and I'm not entirely sure why. I've tried creating another button in the press() function with the same names and parameters except a different text.

    import tkinter
    import Theme
    import Info
    
    Tk = tkinter.Tk()
    message = 'Not pressed.'
    
    #Sets window Options
    Tk.wm_title(Info.Title)
    Tk.resizable(width='FALSE', height='FALSE')
    Tk.wm_geometry("%dx%d%+d%+d" % (720, 480, 0, 0))
    
    
    #Method run by item button
    def press():
        message = 'Button Pressed'
        Tk.update()
    
    #item button
    item = tkinter.Button(Tk, command=press).pack()
    
    #label
    Instruction = tkinter.Label(Tk, text=message, bg=Theme.GUI_hl2, font='size, 20').pack()
    
    #Background
    Tk.configure(background=Theme.GUI_bg)
    Tk.mainloop()
    
  • Phoenix
    Phoenix almost 9 years
    PY_VAR0 has replaced the "Button Not Pressed" and "Button Pressed" text it would seem
  • fdsa
    fdsa almost 9 years
    @Phoenix don't understand your comment
  • Phoenix
    Phoenix almost 9 years
    When I run my program, It displays "PY_VAR0" Instead of "Button Pressed", which should be displayed after it is pressed, or "Not Pressed" before it is pressed.
  • Pyd
    Pyd about 6 years
    AttributeError: 'NoneType' object has no attribute '_root'