2017-01-28 2 views
0

Это просто в основном этикетка с кнопкой, которая запускает таймер от 30 до 0.Python/Tkinter отсчет не работает

Я не знаю причину, почему .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() 
+0

Nevermind я только что узнал, счетчик только начинал над 29 каждый раз забавы ction repeat, поэтому я просто создаю глобальную переменную, и теперь она работает –

+0

В этом случае либо предоставите ответ самостоятельно, либо удалите вопрос. – ImportanceOfBeingErnest

ответ

2

Вы делаете значение ассигнование «счетчик = 29» в начале вашей функции, поэтому каждый раз функция «temporizador» называется (каждую секунду, я думаю), значение переменной «счетчик» будет равно 29.

Для того, чтобы это работало, вам необходимо:

1) Удалить значение ассигнование, чтобы противостоять в начале функции temporizador

2) Создайте еще одну функцию, которая устанавливает значение счетчика 29, а затем называет temporizador, что-то вроде этого:

def button_clicked(): 
    counter = 29 
    temporizador() 

3) Установите команду кнопки «Ботон», чтобы быть button_clicked вместо temporizador

Смежные вопросы