Как правильно вывести текущее время в окне tkinter?

Задача в том, чтобы в окне создать Label, в котором будет динамически обновляться текущее время в формате hh:mm:ss. У меня получается вывести время, но оно не обновляется, а показывает только время, которое совпадает с запуском скрипта. Вот то, что пока что есть:

root = tkinter.Tk()
root.geometry('400x150+{}+{}'.format(500, 400))
a = Label(root, text=f"{datetime.now():%H:%M:%S}", font=("helvetica", 15))
a.pack()
root.mainloop()

Ответы (1 шт):

Автор решения: insolor

f-строка формируется только один раз, а не перезапускает прописанные в ней функции. Нужно принудительно обновлять текст периодически.

import tkinter
from tkinter import *
from datetime import datetime


def update_time():
    a.config(text=f"{datetime.now():%H:%M:%S}")
    root.after(100, update_time)  # Запланировать выполнение этой же функции через 100 миллисекунд


root = tkinter.Tk()
root.geometry('400x150+{}+{}'.format(500, 400))
a = Label(root, font=("helvetica", 15))
a.pack()

update_time()

root.mainloop()
→ Ссылка