我希望使用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之外的东西吗?
答案 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()