基于Python的简单计时器脚本无法正常工作

时间:2018-08-23 20:40:17

标签: python python-3.x timer

我正在为一个简单的计时器测试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()

输出未显示输入值的顺序减小。我需要一些建议。

这就是计时器的样子。

Timer

1 个答案:

答案 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)。