Bir sürü kısım okudum ancak ya ben anlamıyorum yada anlatımda problem var sitemizin belgelerinde de bulamadım maalesef datatime falan var ama istediğimi yok. Şimdi bende bir ekran açılıyor ve bu ekranın 5 sn sonra kapanması gerekiyor. Bunu nasıl yapabilirim? time modülü ile yapan arkadaşlar gördüm ama tabii bir anlatım olmadığı için programıma entegre edemedim varsa eğer istihza belgesi yoksa bana rica etsem anlatbilirmisiniz?
Sanırım ben bir şeyi yanlış anlıyorum ben programım duraklasın istemiyorum sonlansın istiyorum örneğin 5 den geriye saysın sonrasında ise program bulunduğu sayfayı kapatıp diğer sayfaya geçsin istiyorum
Hmm bir parça anladım gibi ancak yazdığım hali ile sadece programı daha geç başlatıyor başka bir işe yaramadı nedense?
import time
time.sleep() #Parantez içi saniye cinsinden olacak
bunun import kısmını ilk satıra
time sleep kısmını kodun en alt satırına eklemelisiniz
Evet bunu denedim ve sadece program daha geç çalıştı sanırım yanlış yapıyorum bir şeyi
kodunu paylaşırsan belki yardımcı olacak biri çıkacaktır
def timer():
time.sleep(1)
form2.destroy()
def resimcik():
form2=tk.Tk()
form2.title("Hoşgeldiniz...")
form2.geometry("300x100+500+300")
foto = tk.PhotoImage(file="logo.gif")
etiket = tk.Label(form2, image=foto).pack()
timer()
başlangıç()
resimcik()
ayrıca def ile değil direk koda eklediğim zaman program geç açlılıyor ve hiçbirşey değişmiyor
Kodun başında gerekli importları yaptım onunla alakalı bir eksik yok
Tkinter’da time.sleep
kullanmak arayüzün donmasına sebep oluyor. Şuraya göz atın:
Bu dediğiniz işlemi denerken şöyle bir kod yazdım
def timer():
yield 3
print("elma")
timer()
şimdi böyle iken 3 saniye bekleyip elma yazması gerekmez mi? programıma entegre etmeden önce deneme amaçlı böyle küçük bir kod yazdım ama
Hayır, yield
’in programı bekletme ile bir alakası yok. Ben verdiğim linkte üreteçleri kullanarak programın beklemesini sağlıyorum. Sizin bu konuya gelmenize daha var sanırım, istiyorsanız sadece kodu kullanın.
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()
Bu kod üzerinde değişimler yapın, def wait...
kısmını silmeyin ve beklemesini istediğiniz her fonksiyonun başına @wait
yazın.