python - 为什么我的计时器只有在达到 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()
解决方案
在这里,我修改了你的代码。当它达到零时,它退出程序。
代码:
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()
。
希望这可以帮助!
推荐阅读
- matlab - 根据密度确定数据中的间距
- reactjs - 未捕获的类型错误:__WEBPACK_IMPORTED_MODULE_0_react___default.a.createContext 不是 React 项目中的函数
- python - 如何创建 python 字典只接受唯一的可变对象
- node-fhir-server-core - Asymmetrik FHIR 服务器核心支持 FHIRCast?
- asp.net-core - 当 web.config 不存在时,向 asp.net 核心应用程序的 web.config 文件添加条目
- python - 项目 2 人类金字塔计算
- vb.net - 在后面的 VB.NET 代码中格式化这个 GET 请求?
- flutter - I/flutter (12815): NoSuchMethodError: Class 'AuthResult' has no instance getter 'uid'
- python - 在 for 循环中打印一个列表,其中的标题连接到每个值
- amazon-web-services - AWS Cognito 中不同身份验证流程的不同访问级别