Cómo cambiar el texto de la etiqueta Tkinter al presionar un botón

Tengo este código y está destinado a cambiar el texto de la etiqueta de Instruction cuando se presiona el botón de elemento. No por alguna razón, y no estoy completamente seguro de por qué. He intentado crear otro botón en la función press() con los mismos nombres y parámetros, excepto un texto diferente.

 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() 

Obra:

 message = 'Button Pressed' 

no afectará a la etiqueta del widget. Todo lo que hará es reasignar el message variable global a un nuevo valor.

Para cambiar el texto de la etiqueta, puede usar su método .config() (también denominado .configure() ):

 def press(): Instruction.config(text='Button Pressed') 

Además, tendrá que llamar al método del pack en una línea separada al crear la etiqueta:

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

De lo contrario, la Instruction se asignará a None porque ese es el valor de retorno del método.

Puedes hacer un message en StringVar para hacer la callback.

 message = tkinter.StringVar() message.set('Not pressed.') 

textvariable configurar el message para que sea una textvariable de textvariable para la Instruction :

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

y entonces

 def press(): message.set('Button Pressed')