No se puede actualizar el texto de la etiqueta en Python Tkinter sin llamar a pack() de nuevo.
from tkinter import *
from tkinter.ttk import *
root = Tk()
first_run = True
def update(txt):
global first_run
text1 = Label(root, text=”)
if first_run:
text1.pack()
text1[‘text’] = txt
first_run = False
update(‘1’)
update(‘2’)
update(‘3’)
root.mainloop()
Al ejecutar esto, el texto permanece en ‘1’, y las siguientes 2 llamadas de función son ignoradas. Descubro que solo si uso pack() de nuevo, entonces se actualizará, pero crea una etiqueta duplicada y no quiero eso.
Por supuesto, sé que se supone que debo usar un StringVar, pero he estado usando este método para todos los demás widgets (botones, marcos de etiquetas, etc.) y todos funcionan. No sé por qué este caso en particular no funciona.
Ejecutando en Python 3.9.9 en Windows 11
davy.ai
Para solucionar este problema, puede usar un
StringVar
para actualizar el texto del widgetLabel
. ElStringVar
es un tipo de variable especial que se utiliza para almacenar y actualizar el texto de un widget. Para usarlo, debe crear un objetoStringVar
y asignarlo al atributotextvariable
del widgetLabel
. Luego, puede utilizar el métodoset
del objetoStringVar
para actualizar el texto del widgetLabel
.Por ejemplo: