在python 3.7中创建一个数字时钟

问题描述 投票:0回答:1

基本上,我正在尝试在python中创建一个数字时钟,以便在运行程序时显示在一个小窗口上。我有两个关于如何制作这些的想法,但下面的代码是相同的。我的问题是:如果我使用time.sleep命令,当我运行程序时,窗口甚至不会弹出,但如果我使用root.after(1000, clock(root, w),窗口会出现,但它会创建1000个标签,给出“超出递归深度”错误。有帮助吗?

import time as t
import tkinter as tk

from datetime import datetime

def main():
    root = tk.Tk()
    root.title("Digital Clock")
    w = tk.Label(font = (100))
    w.pack()
    clock(root, w)
    root.mainloop()

def clock(root, w):
    t.sleep(1)
    timelabeled = " "
    now = datetime.now()
    timelabeled = ("%s/%s/%s   %s:%s:%s" % (now.day, now.month, now.year, now.hour, now.minute, now.second))

    w.config(text = timelabeled, )
    root.after(clock(root, w))   

if __name__ == "__main__":
    main()

我的结果应该是一个带有代表时间的标签的小窗口,它每秒都会更新,但这不是我得到的。我得不到任何东西,或1000个不更新的标签。

python tkinter clock
1个回答
0
投票

您可以使用root.after每1秒重复一次该功能。不需要睡觉。

import tkinter as tk

from datetime import datetime

root = tk.Tk()
root.title("Digital Clock")

def clock():
    now = datetime.now()
    timelabeled = ("%s/%s/%s   %s:%s:%s" % (now.day, now.month, now.year, now.hour, now.minute, now.second))
    w.config(text = timelabeled, )
    root.after(1000,clock)

w = tk.Label(font = (100))
w.pack()
clock()
root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.