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!