Search on blog:

Tkinter: Użycie after() do wyświetlania czasu

Używajac

root.after(milliseconds, callback)

można uruchomić funkcję z opoźnieniem.

Można to wykorzystać do wyświetlannia aktualnego czasu

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 used it for countdown time Można także używać do odliczania czasu w dół

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 oznacza nazwę funkcji bez () i bez argumentów. Aby wykonywać funkcję z argumentami można używać

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