繁体   English   中英

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

[英]How to get/print Updated Time per second in a Tkinter window

我想使用 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 以外的其他东西吗?

label将获取当前时间,然后不再执行任何操作。 timeout函数将在doing_it后调用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()之前检查它。 然后,当您将其设置为Falsetimeout()将停止告诉Tkinter调用它。

仔细阅读这个,每一个代码......

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM