Создание цифровых часов в Python 3.7 - PullRequest
0 голосов
/ 12 апреля 2019

Итак, я пытаюсь сделать цифровые часы на 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 ярлыков, которые не обновляются.

1 Ответ

0 голосов
/ 12 апреля 2019

Вы можете просто использовать 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()
...