【发布时间】:2019-04-12 03:43:45
【问题描述】:
所以基本上,我正在尝试在 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 个标签没有更新。
【问题讨论】:
-
1000 个标签问题是因为您在
clock(root, w)函数内运行clock- 无限递归。