基本上,我正在尝试在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个不更新的标签。
您可以使用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()