Mobil Menü

Python ile Saat ve Kronometre Uygulaması

Python programlama dili, kullanıcı dostu arayüzler oluşturmak için oldukça esnek ve güçlü bir araç sunar. Bu yazıda, Python ve Tkinter kütüphanesi kullanılarak geliştirilen Saat ve Kronometre Uygulamasını tanıtıyoruz. Bu uygulama, hem güncel saati gösteren hem de kronometre ve geri sayım özellikleri sunan pratik bir araçtır. İster zaman yönetimi için, ister egzersiz veya çalışma sürelerinizi takip etmek için kullanabilirsiniz.

Uygulamanın Öne Çıkan Özellikleri

  1. Gerçek Zamanlı Saat: Uygulama, sistem saatini kullanarak gerçek zamanlı bir saat gösterir. Saat, her saniye otomatik olarak güncellenir ve kullanıcıya anlık bilgi sunar.
  2. Kronometre: Başlat, durdur ve sıfırla butonları ile kolayca kontrol edilebilen bir kronometre özelliği bulunur. Kronometre, saniye, dakika ve saat cinsinden çalışır, böylece uzun süreli zaman ölçümleri yapabilirsiniz.
  3. Geri Sayım Özelliği: Belirli bir süre için geri sayım yapabilirsiniz. Kullanıcı, saniye cinsinden bir süre girerek geri sayımı başlatabilir. Geri sayım tamamlandığında, uygulama kullanıcıyı bilgilendirir.
  4. Basit ve Kullanıcı Dostu Arayüz: Uygulama, Tkinter kütüphanesi kullanılarak geliştirilmiştir ve temiz, anlaşılır bir arayüze sahiptir. Butonlar ve etiketler, kullanıcıların kolayca etkileşim kurmasını sağlar.
  5. Platform Bağımsız: Python’un taşınabilir yapısı sayesinde bu uygulama, Windows, macOS ve Linux gibi farklı işletim sistemlerinde sorunsuzca çalışır.

Uygulama Nasıl Çalışır?

Uygulama, Tkinter kütüphanesi ile oluşturulan bir pencere içerisinde çalışır. Kullanıcılar, kronometreyi başlatıp durdurabilir, sıfırlayabilir veya geri sayım özelliğini kullanabilir. Geri sayım süresi, kullanıcı tarafından belirlenir ve uygulama bu süreyi geriye doğru sayar. Kronometre ve geri sayım, aynı anda çalışabilir, böylece farklı zaman yönetimi ihtiyaçlarınızı karşılayabilirsiniz.

Neden Bu Uygulamayı Kullanmalısınız?

  • Zaman Yönetimi: Egzersiz, çalışma veya oyun sürelerinizi kolayca takip edebilirsiniz.
  • Eğitim Amaçlı: Python ve Tkinter öğrenmek isteyenler için harika bir başlangıç projesidir.
  • Hafif ve Hızlı: Uygulama, düşük sistem kaynağı tüketir ve hızlı çalışır.

Sonuç

Python ile geliştirilen bu Saat ve Kronometre Uygulaması, hem basit hem de işlevsel bir çözüm sunar. Zaman yönetimi ihtiyaçlarınızı karşılamak veya Python programlama becerilerinizi geliştirmek için bu uygulamayı kullanabilirsiniz. Kod, açık ve anlaşılır bir yapıya sahiptir, böylece üzerinde kolayca değişiklikler yapabilir ve özelleştirebilirsiniz.

import tkinter as tk
from tkinter import font
import time

class SaatKronometreApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Saat ve Kronometre")
        self.root.geometry("400x300")

        self.kronometre_calisiyor = False
        self.baslangic_zamani = None
        self.geri_sayim_hedef = 0  # Geri sayım için hedef süre (saniye cinsinden)

        # Fontlar
        self.buyuk_font = font.Font(family="Helvetica", size=36)
        self.kucuk_font = font.Font(family="Helvetica", size=18)

        # Saat etiketi
        self.saat_etiketi = tk.Label(root, text="", font=self.buyuk_font)
        self.saat_etiketi.pack(pady=10)

        # Kronometre etiketi
        self.kronometre_etiketi = tk.Label(root, text="00:00:00", font=self.buyuk_font)
        self.kronometre_etiketi.pack(pady=10)

        # Geri sayım etiketi
        self.geri_sayim_etiketi = tk.Label(root, text="Geri Sayım: 00:00:00", font=self.kucuk_font)
        self.geri_sayim_etiketi.pack(pady=5)

        # Butonlar için frame
        self.buton_frame = tk.Frame(root)
        self.buton_frame.pack(pady=10)

        # Başlat/Durdur butonu
        self.baslat_durdur_butonu = tk.Button(self.buton_frame, text="Başlat", font=self.kucuk_font, command=self.baslat_durdur)
        self.baslat_durdur_butonu.grid(row=0, column=0, padx=10)

        # Sıfırla butonu
        self.sifirla_butonu = tk.Button(self.buton_frame, text="Sıfırla", font=self.kucuk_font, command=self.sifirla)
        self.sifirla_butonu.grid(row=0, column=1, padx=10)

        # Geri sayım girişi
        self.geri_sayim_giris = tk.Entry(self.buton_frame, font=self.kucuk_font, width=10)
        self.geri_sayim_giris.grid(row=0, column=2, padx=10)
        self.geri_sayim_giris.insert(0, "10")  # Varsayılan geri sayım süresi (saniye)

        # Geri sayım başlat butonu
        self.geri_sayim_butonu = tk.Button(self.buton_frame, text="Geri Sayım", font=self.kucuk_font, command=self.geri_sayim_baslat)
        self.geri_sayim_butonu.grid(row=0, column=3, padx=10)

        # Saati güncelle
        self.saati_guncelle()

    def saati_guncelle(self):
        su_an = time.strftime("%H:%M:%S")
        self.saat_etiketi.config(text=su_an)
        self.root.after(1000, self.saati_guncelle)

    def baslat_durdur(self):
        if self.kronometre_calisiyor:
            self.kronometre_calisiyor = False
            self.baslat_durdur_butonu.config(text="Başlat")
        else:
            if not self.kronometre_calisiyor:
                if self.baslangic_zamani is None:
                    self.baslangic_zamani = time.time()
                else:
                    self.baslangic_zamani = time.time() - (self.baslangic_zamani - time.time())
            self.kronometre_calisiyor = True
            self.baslat_durdur_butonu.config(text="Durdur")
            self.kronometreyi_guncelle()

    def kronometreyi_guncelle(self):
        if self.kronometre_calisiyor:
            gecen_zaman = time.time() - self.baslangic_zamani
            dakikalar, saniyeler = divmod(int(gecen_zaman), 60)
            saatler, dakikalar = divmod(dakikalar, 60)
            self.kronometre_etiketi.config(text=f"{saatler:02}:{dakikalar:02}:{saniyeler:02}")
            self.root.after(1000, self.kronometreyi_guncelle)

    def sifirla(self):
        self.kronometre_calisiyor = False
        self.baslangic_zamani = None
        self.kronometre_etiketi.config(text="00:00:00")
        self.baslat_durdur_butonu.config(text="Başlat")

    def geri_sayim_baslat(self):
        try:
            self.geri_sayim_hedef = int(self.geri_sayim_giris.get())
            if self.geri_sayim_hedef > 0:
                self.geri_sayim_etiketi.config(text=f"Geri Sayım: {self.geri_sayim_hedef:02}:00")
                self.geri_sayim_guncelle()
        except ValueError:
            self.geri_sayim_etiketi.config(text="Geçersiz süre!")

    def geri_sayim_guncelle(self):
        if self.geri_sayim_hedef > 0:
            dakikalar, saniyeler = divmod(self.geri_sayim_hedef, 60)
            self.geri_sayim_etiketi.config(text=f"Geri Sayım: {dakikalar:02}:{saniyeler:02}")
            self.geri_sayim_hedef -= 1
            self.root.after(1000, self.geri_sayim_guncelle)
        else:
            self.geri_sayim_etiketi.config(text="Geri Sayım Tamamlandı!")

if __name__ == "__main__":
    root = tk.Tk()
    app = SaatKronometreApp(root)
    root.mainloop()
Osman Bayrak
Osman Bayrak

Yazılım Mühendisiyim. Teknoloji ve yazılıma meraklıyım.

Articles: 163