【问题标题】:creating a digital clock in python 3.7在 python 3.7 中创建一个数字时钟
【发布时间】: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 - 无限递归。

标签: python tkinter clock


【解决方案1】:

您可以使用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()

【讨论】:

  • 所以我想我的问题是“主要”。一旦我像在您的代码中一样删除了“def main()”,一切都会完美无缺。你能解释一下为什么会这样吗?我不知道...提前谢谢!
  • 这是一个范围问题,与 tkinter 无关。基本上你不能只在不同的函数中传递局部变量——你需要声明全局变量,或者使用 OOP。
【解决方案2】:

它只是一个使用 Tkinter 模块的简单时钟,用于软件外观:

from tkinter import *
from time import strftime

root=Tk()
root.title("clock")

def time():
    string=strftime("%H: %M: %S: %p")
    label.configure(text=string)
    label.after(1000, time) 

label=Label(root, font=("Arial Black", 40),bg="black", fg="white")
label.pack(anchor="center")


time()
root.mainloop()

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2021-11-18
    • 2012-01-15
    相关资源
    最近更新 更多