Bugün sizlerle birlikte Tkinter kullanarak Windows sistemler için kullanışlı, estetik ve basit bir widget oluşturacağız. Bu rehber, sizlere Tkinter’da stil oluşturma, locale ayarları ile çalışarak Türkçe karakter desteği sağlama, dinamik saat ve tarih güncellemeleri ekleme gibi önemli deneyimler kazandıracak. Kodları adım adım açıklayarak, sizlerin de kolayca uygulayabileceği bir rehber hazırladım. Haydi başlayalım!
1. Gerekli Modüller
Öncelikle main.py dosyamızı oluşturup, projemizde kullanacağımız
modülleri içe aktaralım:
import tkinter as tk
from tkinter import ttk
from datetime import datetime
import locale
import platform
2. Widget Elementlerini Oluşturma
Gün, tarih ve saat elementlerini oluşturmak ve oluşturduğumuz
elementlerin stil düzenlemelerini yapmak için Tkinter’ın ttk.Style
sınıfını kullanacağız. Her element için ayrı ayrı stiller tanımlayalım:
def elementleri_olustur():
style = ttk.Style()
# Gün için soluk bir beyaz renk kullandım. Font: Comic Sans MS
# Dilediğiniz stili aşağıdaki ilgili kısımlardan ayarlayabilirsiniz.
day_color = "#b2b2b2"
style.configure("NeonDay.TLabel",
foreground=day_color,
background="black",
font=("Comic Sans MS", 40, "bold"))
date_color = "#768476"
style.configure("NeonDate.TLabel",
foreground=date_color,
background="black",
font=("Comic Sans MS", 13))
time_color = "#0bcf0e"
style.configure("NeonTime.TLabel",
foreground=time_color,
background="black",
font=("Comic Sans MS", 13))
3. Locale Ayarları
Türkçe gün ve tarih bilgilerini doğru şekilde gösterebilmek için sistemin locale ayarlarını Türkçe yapıyoruz:
if platform.system() == "Windows":
locale.setlocale(locale.LC_TIME, 'Turkish_Turkey.1254')
else:
locale.setlocale(locale.LC_TIME, 'tr_TR.UTF-8')
4. Türkçe Karakter Dönüşümü
Türkçe karakterlerin doğru bir şekilde büyük harfe çevrilmesi için yardımcı bir fonksiyon tanımlıyoruz:
def to_upper_tr(text):
char_map = {'i': 'İ', 'ş': 'Ş', 'ğ': 'Ğ',
'ü': 'Ü', 'ö': 'Ö', 'ç': 'Ç', 'ı': 'I'}
return ' '.join(char_map.get(c, c.upper()) for c in text)
5. Ana Pencereyi Oluşturma
Ana pencereyi oluşturup, arka planı şeffaf hale getiriyoruz:
root = tk.Tk()
root.title("Leidenfrost Widget")
root.overrideredirect(True) # Pencere çerçevesini kaldırdık
root.geometry("600x300+457+540") # Pencere boyutunu ve konumunu ayarladık
root.configure(bg='black')
root.wm_attributes("-transparentcolor", "black") # Siyah arka planı şeffaf hale getirdik
6. Oluşturulan Elementleri Tanımlama ve Güncelleme
Gün, tarih ve saat bilgilerini tanımlayıp, her saniyede bir güncelliyoruz:
elementleri_olustur()
def update_time():
today_day = to_upper_tr(datetime.today().strftime('%A'))
today_date = datetime.today().strftime('%d %B %Y')
current_time = datetime.today().strftime('%H:%M:%S')
day_label.config(text=today_day)
date_label.config(text=today_date)
time_label.config(text=current_time)
root.after(1000, update_time) # Her saniyede bir saati güncelliyoruz.
# Gün ismini gösteren labeli oluşturalım.
day_label = ttk.Label(root, text="", style="NeonDay.TLabel")
day_label.place(relx=0.5, rely=0.3, anchor='center')
# Tarihi gösteren labeli oluşturalım.
date_label = ttk.Label(root, text="", style="NeonDate.TLabel")
date_label.place(relx=0.5, rely=0.5, anchor='center')
# Saati gösteren labeli oluşturalım.
time_label = ttk.Label(root, text="", style="NeonTime.TLabel")
time_label.place(relx=0.5, rely=0.58, anchor='center')
update_time()
7. Pencereyi Fare ile Taşınabilir Hale Getirme
Pencereyi fare ile taşınabilir hale getirmek için gerekli işlevleri tanımlıyoruz:
def on_click(event):
root._drag_data = {'x': event.x, 'y': event.y}
def on_drag(event):
x = root.winfo_x() + event.x - root._drag_data['x']
y = root.winfo_y() + event.y - root._drag_data['y']
root.geometry(f"+{x}+{y}")
for widget in (day_label, date_label, time_label):
widget.bind("<Button-1>", on_click)
widget.bind("<B1-Motion>", on_drag)
8. Uygulamayı Başlatma
Son olarak, uygulamamızı çalıştırıyoruz:
root.mainloop()
9. Uygulamayı EXE’ye Çevirme
Widget’i her sistemde çalışabilecek şekilde bir EXE dosyasına dönüştürmek için PyInstaller kullanacağız. Öncelikle, CMD üzerinden PyInstaller’ı yükleyelim:
pip install pyinstaller
Ardından, CMD üzerinden projemizin bulunduğu dizine gelip aşağıdaki komut ile Python scriptimizi EXE haline getirelim:
pyinstaller --onefile --noconsole main.py
Bu komut, scriptimizi dist klasöründe bir EXE dosyası olarak
oluşturacaktır.
10. Widget’i Sistem Başlangıcında Çalıştırma
Oluşturduğumuz EXE’nin kısayolunu başlangıç klasörüne eklemek için:
Windows tuşu + R ile çalıştırı açın → shell:startup yazıp tamama
tıklayarak Başlangıç klasörüne girin. Kısayolu bu klasöre atın. Artık
sistem başlangıcında widget’ımız otomatik olarak açılacaktır.
Sonuç

İndirilebilir dosyalar:
Umarım bu rehber, kendi widget projelerinizi oluşturmak adına size faydalı olmuştur.