Python/Tkinter倒计时不工作

Python/Tkinter倒计时不工作,python,tkinter,Python,Tkinter,它基本上只是一个带有按钮的标签,可以将计时器从30启动到0 我不知道为什么.after(1000,temporizador)没有完成他的工作,它只是停留在29,它应该重复这个函数,直到计数器达到0 from Tkinter import * import time ventana = Tk() v = StringVar() v.set("30") def temporizador(): counter = 29 if counter <= 0: v.se

它基本上只是一个带有按钮的标签,可以将计时器从30启动到0

我不知道为什么.after(1000,temporizador)没有完成他的工作,它只是停留在29,它应该重复这个函数,直到计数器达到0

from Tkinter import *
import time
ventana = Tk()
v = StringVar()
v.set("30") 
def temporizador():
    counter = 29
    if counter <= 0:
        v.set("tiempo")
    else:
        v.set(str(counter))
        counter -= 1
        ventana.after(1000, temporizador)
etiqueta = Label(ventana, textvariable = v)
etiqueta.pack()
boton = Button(ventana, text="Empezar", command = temporizador)
boton.pack()
ventana.mainloop()
从Tkinter导入*
导入时间
文塔纳=Tk()
v=StringVar()
v、 集合(“30”)
def temporizador():
计数器=29

如果counter在函数的开头进行赋值“counter=29”,那么每次调用函数“temporizador”(我想是每秒),变量“counter”的值都是29

为了使其正常工作,您应该:

1) 删除函数temporizador开头的计数器赋值

2) 创建另一个函数,将counter的值设置为29,然后调用temporizador,如下所示:

def button_clicked():
    counter = 29
    temporizador()

3) 将按钮“boton”的命令设置为单击按钮,而不是临时化程序

您在函数开头执行值分配“counter=29”,因此每次调用函数“temporizador”(我认为是每秒),变量“counter”的值都将是29

为了使其正常工作,您应该:

1) 删除函数temporizador开头的计数器赋值

2) 创建另一个函数,将counter的值设置为29,然后调用temporizador,如下所示:

def button_clicked():
    counter = 29
    temporizador()

3) 将按钮“boton”的命令设置为单击按钮,而不是临时化或

无需担心,我刚刚发现每次函数重复自身时,计数器都会在29上重新启动,所以我只创建了一个全局变量,在本例中它现在起作用,要么自己提供答案,要么删除问题。不管怎样,我刚刚发现每次函数重复时计数器都是从29开始的,所以我只创建了一个全局变量,现在它可以工作了。在这种情况下,要么自己提供答案,要么删除问题。