Search on blog:

Tkinter: Using after() to display time [GB]

Using

root.after(milliseconds, callback)

you can run function with delay.

You can use it to display current time

import tkinter as tk
import time

# --- function ---

def update_timer():
    timer['text'] = time.strftime('%H:%M:%S')
    root.after(1000, update_timer) # run again after 1000ms = 1s

# --- main ---

root = tk.Tk()

timer = tk.Label(root, width=10)
timer.pack()

update_timer() # run first time

root.mainloop()

You can also use it for countdown time

import tkinter as tk
import time

# --- function ---

def update_timer():
    global timer_time

    #timer['text'] = time.strftime('%H:%M:%S')
    timer['text'] = str(timer_time)
    timer_time -= 1

    if timer_time >= 0:
        root.after(500, update_timer) # 1000ms = 1s
    else:
        timer['text'] = 'Boom!'

# --- main ---

timer_time = 10

root = tk.Tk()

timer = tk.Label(root, width=10)
timer.pack()

update_timer()

root.mainloop()

callback means function's name without () and without arguments. To run with arguments you can use

root.after(milliseconds, callback, arg1, arg2, ...)
import tkinter as tk
import time

# --- function ---

def update_timer(widget, number):
    widget['text'] = str(number)
    number -= 1

    if number >= 0:
        root.after(1000, update_timer, widget, number) # 1000ms = 1s
    else:
        widget['text'] = 'Boom!'

# --- main ---

root = tk.Tk()

timer1 = tk.Label(root, width=10)
timer1.pack()

timer2 = tk.Label(root, width=10)
timer2.pack()

update_timer(timer1, 5)
update_timer(timer2, 10)

root.mainloop()
If you like it
Buy a Coffee