Почему мой таймер обновляется только когда достигает 1 - PullRequest
0 голосов
/ 27 мая 2020

У меня есть таймер, который использует пользовательский интерфейс tkinter и отображает число, только когда оно достигает 1, вместо обратного отсчета.

import time
from tkinter import *

master = Tk()
t = IntVar()


def countdown(n):
    while n > 0:
        t.set(n)
        n = n - 1
        time.sleep(1)
        if n == 0:
            print('DONE')

time_l = Label(master, textvariable=t)
time_l.grid()
start_b = Button(text='START', command= lambda: countdown(10))
start_b.grid(padx = 150, pady = 30)
mainloop()

1 Ответ

0 голосов
/ 27 мая 2020

Здесь я изменил ваш код. Когда он достигает нуля, он выходит из программы.

Код:

import time
from tkinter import *

master = Tk()
t = IntVar()

time_l = Label(master, text = 0)
time_l.grid()

loop = 1
def countdown(n):
    if n == 0:
        quit()
    n -= 1
    time_l.config(text = n)
    time_l.update()
    master.after(1000, lambda: countdown(n))



start_b = Button(text='START', command = lambda: countdown(10))
start_b.grid(padx = 150, pady = 30)
master.mainloop()

Прочтите о window.after() и config().

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...