我正在为一个简单的计时器测试Python脚本,但在Tkinter窗口中未显示任何内容。
import time
from tkinter import *
def clicked():
val = int(val_Box.get())
val1 = 0
global display_Time
while val1 < val:
display_Time.configure(text=str(val))
display_Time = Label(window,text="",fg="Blue")
display_Time.grid(column=10,row=10)
time.sleep(1)
val -= 1
display_Time.configure(text="Timer Finished")
window = Tk()
window.title("Simple Timer App")
window.geometry("300x200")
clock_Time = Label(window,text= "Enter Clock Time",fg="Green")
clock_Time.grid(column=0,row=0)
val_Box = Entry(window,width = 10,bg = "Yellow")
val_Box.grid(column=1,row=0)
display_Time = Label(window,text="" ,fg="Blue")
display_Time.grid(column=2,row=10)
start_Button = Button(window,text = "START",fg = "Blue",command = clicked)
start_Button.grid(column=0,row=10)
window.mainloop()
输出未显示输入值的顺序减小。我需要一些建议。
这就是计时器的样子。
答案 0 :(得分:1)
您需要update
窗口才能使更改生效。您可以致电window.update()
。另外,您将覆盖while循环期间用作计时器显示的标签。没有理由这样做。因此,您可以安全地删除相应的两行。实际上,重写后的while
循环应类似于:
while val1 < val:
display_Time.configure(text=str(val))
window.update()
time.sleep(1)
val -= 1
还要注意,clicked
函数将阻塞您的GUI线程,直到计时器完成。可能更合适的是启动一个单独的计时器线程,例如from threading import Timer
(有关如何重复执行任务(例如更新GUI)的信息,请查看this answer)。