Solución:
La ventana solo se muestra una vez que se ingresa al bucle principal. Por lo tanto, no verá ningún cambio que realice en su while True
bloque que precede a la línea root.mainloop()
.
Las interfaces GUI funcionan reaccionando a los eventos mientras están en el bucle principal. Aquí hay un ejemplo en el que StringVar también está conectado a un widget de entrada. Cuando cambia el texto en el widget de Entrada, cambia automáticamente en la Etiqueta.
from tkinter import *
root = Tk()
var = StringVar()
var.set('hello')
l = Label(root, textvariable = var)
l.pack()
t = Entry(root, textvariable = var)
t.pack()
root.mainloop() # the window is now displayed
Me gusta la siguiente referencia: referencia de tkinter 8.5: una GUI para Python
A continuación, se muestra un ejemplo práctico de lo que intentaba hacer:
from tkinter import *
from time import sleep
root = Tk()
var = StringVar()
var.set('hello')
l = Label(root, textvariable = var)
l.pack()
for i in range(6):
sleep(1) # Need this to slow the changes down
var.set('goodbye' if i%2 else 'hello')
root.update_idletasks()
root.update
Ingrese al bucle de eventos hasta que todos los eventos pendientes hayan sido procesados por Tcl
.
Tal vez no entiendo la pregunta, pero aquí está mi solución simple que funciona:
# I want to Display total heads bent this machine so I define a label -
TotalHeadsLabel3 = Label(leftFrame)
TotalHeadsLabel3.config(font=Helv12,fg='blue',text="Total heads " + str(TotalHeads))
TotalHeadsLabel3.pack(side=TOP)
# I update the int variable adding the quantity bent -
TotalHeads = TotalHeads + headQtyBent # update ready to write to file & display
TotalHeadsLabel3.config(text="Total Heads "+str(TotalHeads)) # update label with new qty
Acepto que las etiquetas no se actualizan automáticamente, pero se pueden actualizar fácilmente con la
<label name>.config(text="<new text>" + str(<variable name>))
Eso solo debe incluirse en su código después de que se actualice la variable.