Merhaba.
Tkinter kullanırken iki işlem arasında bekleyecekseniz pencere.after
kullanmanız daha doğru olur, aksi takdirde arayüzün donması ile alakalı problemler yaşarsınız:
import tkinter as tk
import time
def komut():
lb["text"] = 99
pencere.after(4000, lambda: lb.config(text = 78)) # 4000 milisaniye sonra ikinci argüman olan fonksiyon çalışacak
pencere = tk.Tk()
lb = tk.Label(text=33)
lb.place(x=20, y=20)
b = tk.Button(text='bas', command=lambda: pencere.after(3000, komut)) # 3000 milisaniye sonra ikinci argüman olan fonksiyon çalışacak
b.place(x=50, y=50)
pencere.mainloop()
Tabii kodumuzu bu şekilde dağıtıp okunaklılığı azaltmak istemiyorsak ufak hilelere başvurabiliriz:
import tkinter as tk
import time
def wait(f):
def start():
g = f()
def repeater():
try:
pencere.after(next(g) * 1000, repeater)
except StopIteration:
pass
repeater()
return start
@wait
def komut():
yield 3 # üç saniye bekliyor
lb["text"] = 99
yield 4 # dört saniye bekliyor
lb["text"] = 78
pencere = tk.Tk()
lb = tk.Label(text=33)
lb.place(x=20, y=20)
b = tk.Button(text='bas', command=komut)
b.place(x=50, y=50)
pencere.mainloop()