首页 > 解决方案 > 为什么我的计时器只有在达到 1 时才更新

问题描述

我有一个使用 tkinter UI 的计时器,它只在达到 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()

标签: pythontkinter

解决方案


在这里,我修改了你的代码。当它达到零时,它退出程序。

代码:

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()

希望这可以帮助!


推荐阅读