Tkinter
Gezinti kısmına atla
Arama kısmına atla
Tkinter, Python programlama dili için standart GUI (Graphical User Interface) kütüphanesidir. Temeli Tcl/Tk kütüphanesine dayanır. Python ile masaüstü uygulamaları geliştirmek için en yaygın kullanılan araçlardan biridir. Python’un standart dağıtımında dahili olarak gelir, bu yüzden ayrıca kuruluma gerek yoktur.
Temel Özellikler
- Basit ve Pythonik API
- Standart Python dağıtımında hazır gelir
- Çok sayıda widget (buton, etiket, giriş alanı vb.)
- Menü, diyalog, canvas ve layout desteği
- Olay tabanlı programlama (event-driven)
Basit Bir Tkinter Uygulaması
import tkinter as tk
# Ana pencere
pencere = tk.Tk()
pencere.title("Merhaba Tkinter")
pencere.geometry("300x200")
# Bir etiket ekleyelim
etiket = tk.Label(pencere, text="Merhaba Dünya!", font=("Arial", 14))
etiket.pack(pady=20)
# Bir buton ekleyelim
def tiklandi():
etiket.config(text="Butona Tıklandı!")
buton = tk.Button(pencere, text="Tıkla", command=tiklandi)
buton.pack()
# Pencereyi çalıştır
pencere.mainloop()
Temel Kavramlar
- Tk(): Ana pencere (root window) oluşturur.
- Widget: Kullanıcı arayüzü elemanlarıdır. (Label, Button, Entry vb.)
- Geometry Manager: Widget’lerin pencere içindeki yerleşimini düzenler.
* pack(): Sıralı yerleşim * grid(): Tablo bazlı yerleşim * place(): Koordinat tabanlı yerleşim
Yaygın Kullanılan Widget’ler
Label
Metin veya görsel göstermek için.
etiket = tk.Label(pencere, text="Merhaba")
etiket.pack()
Button
Kullanıcıdan tıklama alır.
buton = tk.Button(pencere, text="Kaydet", command=fonksiyon)
buton.pack()
Entry
Tek satırlık metin giriş kutusu.
giris = tk.Entry(pencere)
giris.pack()
Text
Çok satırlı metin giriş alanı.
metin = tk.Text(pencere, height=5, width=30)
metin.pack()
Checkbutton & Radiobutton
Seçim yapılmasını sağlar.
var = tk.IntVar()
secim = tk.Checkbutton(pencere, text="Onaylıyorum", variable=var)
secim.pack()
Listbox
Liste halinde öğeler gösterir.
liste = tk.Listbox(pencere)
liste.insert(1, "Python")
liste.insert(2, "Java")
liste.insert(3, "C#")
liste.pack()
Olay (Event) Yönetimi
Tkinter olay tabanlıdır. Kullanıcı eylemleri (tıklama, tuş basma vb.) bind ile yakalanabilir.
def tus_basildi(event):
print("Basılan tuş:", event.char)
pencere.bind("<Key>", tus_basildi)
Layout (Yerleşim Yöntemleri)
- pack(): Sıralı yerleşim
- grid(): Satır/sütun bazlı
- place(): Piksel koordinatı ile yerleşim
Menü ve Diyaloglar
menubar = tk.Menu(pencere)
dosya_menu = tk.Menu(menubar, tearoff=0)
dosya_menu.add_command(label="Aç")
dosya_menu.add_command(label="Kaydet")
menubar.add_cascade(label="Dosya", menu=dosya_menu)
pencere.config(menu=menubar)
Canvas ile Çizim
canvas = tk.Canvas(pencere, width=200, height=200, bg="white")
canvas.pack()
canvas.create_line(0, 0, 200, 200, fill="blue")
canvas.create_rectangle(50, 50, 150, 150, fill="red")
Kullanım Alanları
- Basit masaüstü uygulamaları
- Form tabanlı yazılımlar
- Görsel eğitim uygulamaları
- Küçük oyunlar (ör. yılan oyunu)