Python Kurulumu
Python, masaüstü uygulama geliştirme için mükemmel bir programlama dilidir. Basit sözdizimi, geniş kütüphane desteği ve güçlü topluluk ekosistemi ile hem yeni başlayanlar hem de deneyimli geliştiriciler için ideal bir seçimdir.
Python'ı İndirme ve Kurma
Python'ın resmi web sitesi olan python.org adresinden işletim sisteminize uygun sürümü indirebilirsiniz. Windows kullanıcıları için önemli bir not: Kurulum sırasında "Add Python to PATH" seçeneğini işaretlemeyi unutmayın.
Önemli Not
Bu eğitimde Python 3.8 veya daha yeni bir sürüm kullanmanızı öneririz. Python 2.x artık desteklenmemektedir.
Kurulumu Doğrulama
Python'ın doğru şekilde kurulduğunu kontrol etmek için terminal veya komut istemcisinde şu komutu çalıştırın:
python --version # veya python3 --versionTkinter Nedir?
Tkinter (Tk interface), Python ile birlikte gelen standart GUI (Graphical User Interface) kütüphanesidir. Tcl/Tk GUI toolkit'inin Python wrapper'ıdır ve Python kurulumu ile birlikte otomatik olarak gelir, bu nedenle ek kurulum gerektirmez.
Dahili Kütüphane
Python ile birlikte gelir, ek kurulum gerektirmez. Hemen kullanmaya başlayabilirsiniz.
Platform Bağımsız
Windows, macOS ve Linux'ta aynı kod ile çalışır. Bir kez yaz, her yerde çalıştır.
Öğrenme Dostu
Basit ve anlaşılır API'si ile GUI programlamaya giriş için idealdir.
Esnek Yapı
Basit uygulamalardan karmaşık arayüzlere kadar geniş bir yelpazede kullanılabilir.
İlk Tkinter Uygulaması
Şimdi ilk Tkinter uygulamamızı oluşturalım. Bu basit örnek, bir pencere açacak ve "Merhaba Dünya!" mesajını gösterecek:
import tkinter as tk # Ana pencereyi oluştur root = tk.Tk() root.title("İlk Tkinter Uygulamam") root.geometry("400x300") # Bir etiket (label) oluştur label = tk.Label(root, text="Merhaba Dünya!", font=("Arial", 16)) label.pack(pady=20) # Uygulamayı çalıştır root.mainloop()Kod Açıklaması
import tkinter as tk
Tkinter kütüphanesini içe aktarır ve kısa bir isim (tk) verir.
tk.Tk()
Ana pencere nesnesini oluşturur. Bu, uygulamanızın temel konteyneridir.
title() ve geometry()
Pencerenin başlığını ve boyutlarını ayarlar.
mainloop()
Uygulamanın olay döngüsünü başlatır ve pencereyi görünür hale getirir.
Temel Widget'lar
Tkinter'da widget'lar, kullanıcı arayüzünün yapı taşlarıdır. İşte en yaygın kullanılan widget'lar:
Label (Etiket)
Metin veya resim göstermek için kullanılır:
label = tk.Label(root, text="Bu bir etikettir", fg="blue", bg="yellow") label.pack()Button (Düğme)
Kullanıcının tıklayabileceği düğmeler oluşturur:
def button_click(): print("Düğmeye tıklandı!") button = tk.Button(root, text="Tıkla", command=button_click) button.pack()Entry (Metin Girişi)
Tek satırlık metin girişi için kullanılır:
entry = tk.Entry(root, width=30) entry.pack() # Metni almak için text = entry.get()Text (Çok Satırlı Metin)
Çok satırlı metin girişi ve gösterimi için:
text_widget = tk.Text(root, height=10, width=40) text_widget.pack() # Metin eklemek için text_widget.insert(tk.END, "Bu bir metin widget'ıdır")Checkbutton (Onay Kutusu)
Açık/kapalı seçenekleri için:
var = tk.BooleanVar() checkbutton = tk.Checkbutton(root, text="Seçenek", variable=var) checkbutton.pack() # Durumu kontrol etmek için if var.get(): print("Seçili")Radiobutton (Radyo Düğmesi)
Birden fazla seçenek arasından tek seçim için:
var = tk.StringVar(value="secenek1") radio1 = tk.Radiobutton(root, text="Seçenek 1", variable=var, value="secenek1") radio2 = tk.Radiobutton(root, text="Seçenek 2", variable=var, value="secenek2") radio1.pack() radio2.pack()Layout Yöneticileri
Tkinter'da widget'ları pencere içinde düzenlemek için üç ana layout yöneticisi vardır:
pack()
Widget'ları sırayla yerleştirir:
label1 = tk.Label(root, text="Üst", bg="red") label2 = tk.Label(root, text="Alt", bg="blue") label1.pack(side=tk.TOP, fill=tk.X) label2.pack(side=tk.BOTTOM, fill=tk.X)grid()
Widget'ları tablo benzeri bir düzende yerleştirir:
label1 = tk.Label(root, text="Satır 0, Sütun 0") label2 = tk.Label(root, text="Satır 0, Sütun 1") label3 = tk.Label(root, text="Satır 1, Sütun 0") label1.grid(row=0, column=0, padx=5, pady=5) label2.grid(row=0, column=1, padx=5, pady=5) label3.grid(row=1, column=0, padx=5, pady=5)place()
Widget'ları kesin koordinatlarla yerleştirir:
label = tk.Label(root, text="Kesin konum") label.place(x=50, y=100)Önemli Uyarı
Aynı parent widget içinde farklı layout yöneticilerini karıştırmayın. Bu beklenmedik sonuçlara yol açabilir.
Olay Yönetimi
GUI uygulamalarında kullanıcı etkileşimleri olaylar (events) şeklinde işlenir. Tkinter'da olayları yönetmenin çeşitli yolları vardır:
Command Parametresi
Button widget'ları için en yaygın yöntem:
def say_hello(): print("Merhaba!") button = tk.Button(root, text="Selam Ver", command=say_hello) button.pack()bind() Metodu
Daha gelişmiş olay yönetimi için:
def on_key_press(event): print(f"Basılan tuş: {event.keysym}") def on_mouse_click(event): print(f"Mouse tıklandı: ({event.x}, {event.y})") root.bind("", on_key_press) root.bind("", on_mouse_click) # Sol mouse tuşuKapsamlı Örnek: Basit Hesap Makinesi
import tkinter as tk class Calculator: def __init__(self, root): self.root = root self.root.title("Basit Hesap Makinesi") self.root.geometry("300x400") # Sonuç gösterme alanı self.result_var = tk.StringVar() self.result_var.set("0") result_label = tk.Label(root, textvariable=self.result_var, font=("Arial", 20), bg="white", relief=tk.SUNKEN, anchor=tk.E) result_label.grid(row=0, column=0, columnspan=4, sticky="ew", padx=5, pady=5) # Düğmeler buttons = [ ('C', 1, 0), ('±', 1, 1), ('%', 1, 2), ('÷', 1, 3), ('7', 2, 0), ('8', 2, 1), ('9', 2, 2), ('×', 2, 3), ('4', 3, 0), ('5', 3, 1), ('6', 3, 2), ('-', 3, 3), ('1', 4, 0), ('2', 4, 1), ('3', 4, 2), ('+', 4, 3), ('0', 5, 0), ('.', 5, 2), ('=', 5, 3) ] for (text, row, col) in buttons: if text == '0': btn = tk.Button(root, text=text, font=("Arial", 16), command=lambda t=text: self.button_click(t)) btn.grid(row=row, column=col, columnspan=2, sticky="ew", padx=2, pady=2) else: btn = tk.Button(root, text=text, font=("Arial", 16), command=lambda t=text: self.button_click(t)) btn.grid(row=row, column=col, sticky="ew", padx=2, pady=2) # Grid ağırlıklarını ayarla for i in range(4): root.grid_columnconfigure(i, weight=1) for i in range(6): root.grid_rowconfigure(i, weight=1) def button_click(self, value): current = self.result_var.get() if value == 'C': self.result_var.set("0") elif value == '=': try: # Basit hesaplama (güvenlik için eval yerine daha güvenli yöntemler kullanılmalı) result = eval(current.replace('×', '*').replace('÷', '/')) self.result_var.set(str(result)) except: self.result_var.set("Hata") else: if current == "0": self.result_var.set(value) else: self.result_var.set(current + value) # Uygulamayı çalıştır if __name__ == "__main__": root = tk.Tk() app = Calculator(root) root.mainloop()Özet
Bu derste Python ve Tkinter'ın temellerini öğrendiniz. Tkinter ile basit ama işlevsel GUI uygulamaları oluşturabilirsiniz. Bir sonraki derste, yapay zeka kavramlarına giriş yapacağız ve bu bilgileri nasıl masaüstü uygulamalarına entegre edebileceğimizi keşfedeceğiz.