Python 基本Tkinter倒计时计时器
我目前正在从事一个项目,该项目需要一个非常简单的倒计时计时器,它可以在tkinter GUI中工作,并且不依赖于递归。我尝试过不同的方法,但到目前为止似乎没有任何效果Python 基本Tkinter倒计时计时器,python,timer,tkinter,countdown,Python,Timer,Tkinter,Countdown,我目前正在从事一个项目,该项目需要一个非常简单的倒计时计时器,它可以在tkinter GUI中工作,并且不依赖于递归。我尝试过不同的方法,但到目前为止似乎没有任何效果 import time from tkinter import * root = Tk() root.title("Timer") root.geometry("100x100") def countdown(count): label = Label(root, text= count) label.pla
import time
from tkinter import *
root = Tk()
root.title("Timer")
root.geometry("100x100")
def countdown(count):
label = Label(root, text= count)
label.place(x=35, y=15)
for i in range(5,0,-1):
countdown(i)
time.sleep(1)
root.mainloop()
您不能使用
sleep
,因为它会停止mainloop
,并且程序无法工作。您可以使用root.after
在1000ms(1s)后调用函数
与furas已发布的解决方案类似,但使用StringVar:
import Tkinter
def button_countdown(i, label):
if i > 0:
i -= 1
label.set(i)
root.after(1000, lambda: button_countdown(i, label))
else:
close()
def close():
root.destroy()
root = Tkinter.Tk()
counter = 10
button_label = Tkinter.StringVar()
button_label.set(counter)
Tkinter.Button(root, textvariable=button_label, command=close).pack()
button_countdown(counter, button_label)
root.mainloop()
如果这两件作品属于同一个类别(即不需要使用
lambda
),这会变得更加优雅,但我认为你可以理解这一点。sleep
会让窗户锁上。尝试使用根目录。在之后。相关:
import Tkinter
def button_countdown(i, label):
if i > 0:
i -= 1
label.set(i)
root.after(1000, lambda: button_countdown(i, label))
else:
close()
def close():
root.destroy()
root = Tkinter.Tk()
counter = 10
button_label = Tkinter.StringVar()
button_label.set(counter)
Tkinter.Button(root, textvariable=button_label, command=close).pack()
button_countdown(counter, button_label)
root.mainloop()