Python ile Basit Kronometre Yapımı

Python ile basit bir kronometre yapmak istiyorsanız, tkinter modülünü kullanabilirsiniz. tkinter, Python’un standart GUI (grafiksel kullanıcı arayüzü) araç takımıdır ve zaman ölçümü uygulamaları oluşturmak için idealdir. Bu yazıda, tkinter modülünü kullanarak basit bir kronometre uygulaması yapacağız.

Kronometre uygulamasının özellikleri:

  • Başlat, durdur ve sıfırla düğmeleri
  • Süreyi saat:dakika:saniye formatında gösterecek
  • Geri sayım için başlatma süresi belirleme

Öncelikle tkinter modülünü kurmamız gerekiyor. Bunun için terminal veya komut istemcisini açın ve aşağıdaki komutu çalıştırın:

pip install tk

Kronometre uygulaması için aşağıdaki adımları takip edelim:

Adım 1: Gerekli Modülleri İçe Aktarma

Öncelikle, kronometre uygulamasında kullanacağımız modülleri içe aktaralım:

from tkinter import *
import time


# 1 saat = 3600 saniye
# 1 dakika = 60 saniye

# Kronometre sınıfını tanımlama

class Kronometre:
    def __init__(self):
        self.pencere = Tk()  # Ana pencereyi oluşturma
        self.pencere.title("Kronometre")  # Pencere başlığını ayarlama
        self.pencere.geometry("500x250")  # Pencerenin boyutunu ayarlama

        self.saat = StringVar()  # Saat değişkenini tanımlama
        self.dakika = StringVar()  # Dakika değişkenini tanımlama
        self.saniye = StringVar()  # Saniye değişkenini tanımlama

        self.saat.set("00")  # Saat başlangıç değeri
        self.dakika.set("00")  # Dakika başlangıç değeri
        self.saniye.set("00")  # Saniye başlangıç değeri

        self.durum = False  # Kronometrenin çalışma durumunu tanımlama

        self.kronometreArayuzu()  # Kronometre arayüzünü oluşturma
        self.pencere.mainloop()  # Ana döngüyü başlatma

Bu kodda, tkinter modülünü kullanarak bir ana pencere oluşturuyoruz. Ayrıca saat, dakika ve saniye değerlerini temsil etmek için üç adet StringVar değişkeni tanımlıyoruz. Başlangıç değerlerini de sıfır olarak ayarlıyoruz. Kronometrenin çalışma durumu için de bir boolean değişkeni oluşturuyoruz.

Adım 2: Kronometre Arayüzünü Oluşturma

Kronometre arayüzünü oluşturmak için kronometreArayuzu adlı bir fonksiyon tanımlıyoruz. Bu fonksiyonda, saat, dakika ve saniye değerlerini göstermek için üç tane label widget’ı oluşturuyoruz. Ayrıca başlat, duraklat ve sıfırla butonlarını da ekliyoruz:

def kronometreArayuzu(self):
    # Saat label'i oluşturma
    saatLabel = Label(self.pencere, textvariable=self.saat, font=("Courier", 100))
    saatLabel.grid(row=0, column=0)
    # Dakika label'i oluşturma
    dakikaLabel = Label(self.pencere, textvariable=self.dakika, font=("Courier", 100))
    dakikaLabel.grid(row=0, column=1)
    # Saniye label'i oluşturma
    saniyeLabel = Label(self.pencere, textvariable=self.saniye, font=("Courier", 100))
    saniyeLabel.grid(row=0, column=2)

    # Başlat butonu oluşturma
    baslatButonu = Button(self.pencere, text="Başlat", command=self.baslat)
    baslatButonu.grid(row=1, column=0)
    # Duraklat butonu oluşturma
    duraklatButonu = Button(self.pencere, text="Duraklat", command=self.duraklat)
    duraklatButonu.grid(row=1, column=1)
    # Sıfırla butonu oluşturma
    sifirlaButonu = Button(self.pencere, text="Sıfırla", command=self.sifirla)
    sifirlaButonu.grid(row=1, column=2)

Bu fonksiyon sayesinde kullanıcılar saat, dakika ve saniye değerlerini görebilir ve kontrol butonları ile kronometreyi başlatıp duraklatabilirler.

Adım 3: Kronometre Fonksiyonlarını Tanımlama

Kronometrenin çalışma mantığını yönetmek için birkaç fonksiyon tanımlamamız gerekiyor. Bunlar:

  • baslat: Kronometreyi başlatır ve çalışan bir döngü ile zaman akışını yönetir.
  • duraklat: Kronometreyi duraklatır.
  • sifirla: Kronometreyi sıfırlar.
  • guncelle: Kronometrenin süreyi günceller.

Aşağıdaki kodda bu fonksiyonları tanımlıyoruz:

def guncelle(self):
    if self.durum:
        
        if int(self.saniye.get()) == 59:
            self.saniye.set("00")
            if int(self.dakika.get()) == 59:
                self.dakika.set("00")
                if int(self.saat.get()) == 23:
                    self.saat.set("00")
                else:
                    self.saat.set(f"{int(self.saat.get()) + 1:02}")
            else:
                self.dakika.set(f"{int(self.dakika.get()) + 1:02}")
        else:
            self.saniye.set(f"{int(self.saniye.get()) + 1:02}")
        self.pencere.after(1000, self.guncelle)
        
def baslat(self):
    self.durum = True
    self.guncelle()


def duraklat(self):
    self.durum = False


def sifirla(self):
    self.durum = False
    self.saat.set("00")
    self.dakika.set("00")
    self.saniye.set("00")

guncelle fonksiyonu her saniyede bir çağrılır ve saniye değeri değiştikçe dakika ve saat değerlerini günceller. baslat, duraklat ve sifirla fonksiyonları ise bu güncellemeyi kontrol eder ve kronometrenin durumunu değiştirir.

Adım 4: Uygulamayı Çalıştırma

Tüm bu adımları tamamladıktan sonra kronometre uygulamasını çalıştırmak için şu kodu ekleyin:

Kronometre()

Bütün kodu birleştirdiğimizde, aşağıdaki gibi bir kronometre uygulaması elde ederiz:

from tkinter import *
import time

# 1 saat = 3600 saniye
# 1 dakika = 60 saniye

# Kronometre sınıfını tanımlama
class Kronometre:
    def __init__(self):
        self.pencere = Tk()  # Ana pencereyi oluşturma
        self.pencere.title("Kronometre")  # Pencere başlığını ayarlama
        self.pencere.geometry("500x250")  # Pencerenin boyutunu ayarlama

        self.saat = StringVar()  # Saat değişkenini tanımlama
        self.dakika = StringVar()  # Dakika değişkenini tanımlama
        self.saniye = StringVar()  # Saniye değişkenini tanımlama

        self.saat.set("00")  # Saat başlangıç değeri
        self.dakika.set("00")  # Dakika başlangıç değeri
        self.saniye.set("00")  # Saniye başlangıç değeri

        self.durum = False  # Kronometrenin çalışma durumunu tanımlama

        self.kronometreArayuzu()  # Kronometre arayüzünü oluşturma
        self.pencere.mainloop()  # Ana döngüyü başlatma

    def kronometreArayuzu(self):
        # Saat label'i oluşturma
        saatLabel = Label(self.pencere, textvariable=self.saat, font=("Courier", 100))
        saatLabel.grid(row=0, column=0)
        # Dakika label'i oluşturma
        dakikaLabel = Label(self.pencere, textvariable=self.dakika, font=("Courier", 100))
        dakikaLabel.grid(row=0, column=1)
        # Saniye label'i oluşturma
        saniyeLabel = Label(self.pencere, textvariable=self.saniye, font=("Courier", 100))
        saniyeLabel.grid(row=0, column=2)

        # Başlat butonu oluşturma
        baslatButonu = Button(self.pencere, text="Başlat", command=self.baslat)
        baslatButonu.grid(row=1, column=0)
        # Duraklat butonu oluşturma
        duraklatButonu = Button(self.pencere, text="Duraklat", command=self.duraklat)
        duraklatButonu.grid(row=1, column=1)
        # Sıfırla butonu oluşturma
        sifirlaButonu = Button(self.pencere, text="Sıfırla", command=self.sifirla)
        sifirlaButonu.grid(row=1, column=2)

    def guncelle(self):
        if self.durum:
            
            if int(self.saniye.get()) == 59:
                self.saniye.set("00")
                if int(self.dakika.get()) == 59:
                    self.dakika.set("00")
                    if int(self.saat.get()) == 23:
                        self.saat.set("00")
                    else:
                        self.saat.set(f"{int(self.saat.get()) + 1:02}")
                else:
                    self.dakika.set(f"{int(self.dakika.get()) + 1:02}")
            else:
                self.saniye.set(f"{int(self.saniye.get()) + 1:02}")
            self.pencere.after(1000, self.guncelle)
            
def baslat(self):
        self.durum = True
        self.guncelle()

    def duraklat(self):
        self.durum = False
    
def sifirla(self):
        self.durum = False
        self.saat.set("00")
        self.dakika.set("00")
        self.saniye.set("00")

Kronometre()

Kronometre sınıfını ve gerekli fonksiyonları tanımladıktan sonra uygulamamızı çalıştıran son satırımızda Kronometre() yazarak sınıfımızın bir örneğini oluşturmuş oluyoruz. Bu sınıfın örneği çalıştırıldığında tkinter penceresi açılır ve cronometremiz kullanıma hazır hale gelir.

h2>

Kronometre uygulamamız bu şekilde! Kendiniz de daha fazla özellik ekleyerek veya farklı bir tasarım deneyerek geliştirebilirsiniz. İyi kodlamalar!

Scroll to Top