如何在Tkinter窗口中获取/打印每秒更新的时间

时间:2015-06-15 19:21:52

标签: python tkinter

我希望使用Tkinter在窗口中的标签上以秒为单位打印当前时间,但不是每500毫秒更新一次,它就会保持不变。

我能做些什么来让这件事情做对吗?

def timeout():
    t=time.time()
    window.after(500, timeout)
    return t

window = Tkinter.Tk()
window.title("Example")


time_label= Tkinter.Label(text=timeout(),
                    bg="black",fg="white").grid(row=1,column=2)        

window.geometry("100x100+100+100")
window.after(500, timeout)
window.mainloop()

我应该使用除Label之外的东西吗?

2 个答案:

答案 0 :(得分:2)

label将获得当前时间,然后不再做任何事情。 timeout函数会在半秒后调用doing_it,但我不会在任何地方看到它。这是你想要做的:

def timeout():
    time_label.config(text=time.time())
    window.after(500, timeout)

window = Tkinter.Tk()
window.title("Example")


time_label= Tkinter.Label(text='',
                    bg="black",fg="white")
time_label.grid(row=1,column=2)        

timeout()
window.geometry("100x100+100+100")
window.mainloop()

这会将label初始化为空字符串,然后立即调用timeout。该函数将label配置为当前时间,然后将呼叫排队到自身。在必要的时间过后,Tkinter将调用timeout,更新label并将另一个呼叫排队。这将持续到你停止它为止。如果您想这样做,请创建一个标记(例如running=True)并在调用after()之前检查它。然后,当您将其设置为False时,timeout()将停止告知Tkinter将其调用。

答案 1 :(得分:0)

仔细阅读本章,每一段代码...

from tkinter import *
import time


#defining TK()
root = Tk()


#defining Functions

def timesnow():
    currentime = time.strftime ("%H:%M:%S")
    timelabel.config (text=currentime)

    timelabel.after(1000, timesnow)


#creatng GUI's
timelabel = Label(root, font=("Courier", 44))
timelabel.grid()
timesnow()


input = Entry(root)
input.grid()

setbutton = Button(text = "Set Your ALARM")
setbutton.grid()




root.mainloop()