[NOTA DEL MODERADOR]
No uses la etiqueta de citas, debes usar las etiquetas GeShi para insertar código. y postear en la sección adecuada cómo ya te han comentado.
¡Buenas!
Estoy intentando hacer una cuenta atrás con interfaz gráfica. El problema que tengo es que no se como
dentro de una función actualizar una label. Acabo de empezar en esto de la programación, llevo un mes.
Este es mi código:
from tkinter import *
from time import *
from tkinter.messagebox import *
def mostrar(v): v.deiconify()
def ocultar(v): v.withdraw()
def ejecutar(f): v1.after(200,f)
def cuentaatras(_h,_m,_s):
x = True
try:
h = int(_h.get())
m = int(_m.get())
s = int(_s.get())
while (x==True):
_h.set(h)
_m.set(m)
_s.set(s)
print(str(h)+":"+str(m)+":"+str(s))#Test
if s==0 and m!=0:
sleep(1)
s=60
m-=1
print(str(h)+":"+str(m)+":"+str(s))#Test
elif s==0 and m==0 and h!=0:
sleep(1)
s=60
m=60
h-=1
print(str(h)+":"+str(m)+":"+str(s))#Test
elif s==0 and m==0 and h==0:
x=False
sleep(1)
s-=1
except ValueError:
v1a.withdraw()
showerror("Rellena todos los campos","Rellena los campos con 0 para que sean invalidos")
#ventana cuenta atrás
v1 = Tk()
v1.title("Cuenta atrás")
v1.resizable(0,0)
f1=Frame(v1)
f1.grid(column=0,row=0,padx=(10,10),pady=(10,10))
#ventana cuenta atrás 2
v1a = Toplevel(v1)
v1a.title = v1.title
v1a.resizable(0,0)
v1a.withdraw()
#Elementos Cuenta atrás
#Labels
LEnCA = Label(f1,text="Introduce el tiempo que quieras contar.").grid(column=1,row=1,columnspan=3,pady=(0,5))
Lh1 = Label(f1,text="Horas:").grid(column=1,row=2)
Lm1 = Label(f1,text="Minutos:").grid(column=2,row=2)
Ls1 = Label(f1,text="Segundos:").grid(column=3,row=2)
#Entradas
Eh = StringVar()
Ehoras = Entry(f1,width=5,textvar=Eh).grid(column=1,row=3)
Em = StringVar()
Eminutos = Entry(f1,width=5,textvar=Em).grid(column=2,row=3)
Es = StringVar()
Esegundos = Entry(f1,width=5,textvar=Es).grid(column=3,row=3)
#Botones
Bstart1 = Button(f1,text="Start",command=lambda:ejecutar(mostrar(v1a)or (cuentaatras(Eh,Em,Es)))).grid(column=4,row=3)
Bcerrar1= Button(f1,text="Cerrar",command=lambda:ejecutar(ocultar(v1))).grid(column=2,row=4)
#Elementos Cuenta atrás 2
#Labels
h3 = StringVar()
Lh3 = Label(v1a,text=h3).grid(column=1,row=2)
m3 = StringVar()
Mh3 =Label(v1a,text=m3).grid(column=2,row=2)
s3 = StringVar()
Ls3 = Label(v1a,text=s3).grid(column=3,row=2)
#Botones
Bparar = Button(v1a,text="Parar",command=()).grid(column=4,row=2)
Bcerrar1= Button(v1a,text="Cerrar",command=lambda:ejecutar(ocultar(v1a))).grid(column=2,row=3)
v1.mainloop()
Muchas gracias