Python Tkinter Kronometre

Merhaba, arkadaşlarımızla buluştuğumuzda kullanmak için bir tabu oyunu uygulaması yapmaya çalışıyorum. Oyun sırasında süre sayacı olması lazım ama nasıl yapacağımı bulamadım bir türlü time.sleep ile yapsam olmaz çünkü tüm programı durdurur. İnternetten aramalarımda hep time.sleep kullanmışlar. Nasıl bir yöntem kullanabilirim?

Bir de soruyla alakasız olarak oyun için elimde olan kelime hala yetersiz bu konuda yardımcı olabilecek varsa (Nerden, nasıl bulabilirim vs.) çok güzel olur.

Şimdiden teşekkürler.

Merhabalar.
Thread kullanmayı denedinizmi ?

import tkinter as tk
from time import sleep
from threading import Thread

root = tk.Tk()
root.geometry("300x300")

def sayaç():
	zaman = 10
	while zaman > -1:
		sleep(1)
		label["text"] = zaman
		zaman -= 1


label = tk.Label(root,text="",fg="RED")
label.pack()


buton1 = tk.Button(root,text="Wormer",command=Thread(target=sayaç).start())
buton1.pack()

root.mainloop()
2 Beğeni

Bu işe yaradı teşekkürler. Anladığım kadarıyla threading modülü birden fazla işlem yapabilmemiz için bölümlere ayırıyor değil mi?

1 Beğeni

Evet eş zamanlı olarak kodu çalıştırabilirsiniz :slight_smile:

import time

class Kronometre:
    def baslat(self, delay):
        # Bir sonraki fonksiyonda kullanmak üzere gecikme oranını self olarak belirler.
        self.delay = delay  
        # Başlangıç zamanını saniye cinsinden elde eder.
        self.initial_time = time.perf_counter()  
        
    def kontrol(self):
        # Şu anki zamanı saniye cinsinden elde eder.
        current_time = time.perf_counter()
        # Şu anki zaman ile başlangıç zamanı arasındaki farkı kontrol eder.
        if current_time - self.initial_time >= self.delay:
            print(f"{self.delay} saniyelik süre sona erdi.")
            # Eğer işlemleri bu fonksiyon içerisine yazmak istemiyorsanız return kullanabilirsiniz.
            return True 

Kronometre = Kronometre()        
Kronometre.baslat(3)

while True:
    # Eğer süre dolduysa döngü durdurulur.
    if Kronometre.kontrol():
        # Gerçekleşmesini istediğiniz işlemleri buraya koyabilirsiniz.
        break

Cevabın için sağol ama işe yaramadı. Girilen süre bittikten sonra kodlar çalışıyor.

1 Beğeni

Anladım teşekkürler.

1 Beğeni