Tkinter’daki ttk.Combobox
bileşeni, Python GUI uygulamalarınızda açılır menüler oluşturmanın kullanışlı bir yolunu sağlar. Bu öğretici, combobox’ları projelerinize etkili bir şekilde entegre etmenize yardımcı olacak pratik örnekler sağlayarak, temel özelliklerini ve işlevlerini size anlatacaktır.
İçindekiler Tablosu:
- Temel Combobox Örneği
- Görünümü Özelleştirme: Yazı Tipleri ve Stilleri
- Olay İşleme ve Kullanıcı Etkileşimi
- Combobox Değerlerini Dinamik Olarak Güncelleme
- Salt Okunur Combobox’lar Oluşturma
1. Temel Combobox Örneği
ttk.Combobox
‘ın oluşturulmasını ve kullanımını göstermek için basit bir örnekle başlayalım:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox Örneği")
combo = ttk.Combobox(root, values=["Seçenek 1", "Seçenek 2", "Seçenek 3"])
combo.pack(pady=20)
combo.current(0) # Varsayılan değeri "Seçenek 1" olarak ayarla
root.mainloop()
Bu kod, ana bir pencere oluşturur, önceden tanımlanmış üç seçeneğe sahip bir combobox ekler ve varsayılan seçimi “Seçenek 1” olarak ayarlar. Hem tkinter
hem de ttk
‘yı içe aktarmanız gerektiğini unutmayın.
2. Görünümü Özelleştirme: Yazı Tipleri ve Stilleri
Combobox’ın görünümünü, örneğin yazı tipini özelleştirebilirsiniz:
import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont
root = tk.Tk()
root.title("Combobox Stil Örneği")
myFont = tkFont.Font(family="Helvetica", size=12, weight="bold")
combo = ttk.Combobox(root, values=["Seçenek A", "Seçenek B", "Seçenek C"], font=myFont)
combo.pack(pady=20)
combo.current(0)
root.mainloop()
Bu örnek, özel bir yazı tipi nasıl oluşturulur ve combobox’a nasıl uygulanır göstermektedir. İstediğiniz görünüme ulaşmak için farklı yazı tipi aileleri, boyutları ve kalınlıklarıyla denemeler yapın.
3. Olay İşleme ve Kullanıcı Etkileşimi
Kullanıcı seçimlerine yanıt vermek için, combobox’a olaylar bağlayın. Kullanıcı bir öğe seçtiğinde <<ComboboxSelected>>
olayı tetiklenir:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox Olay İşleme")
def combo_selected(event):
seçili_öğe = combo.get()
print(f"Seçili öğe: {seçili_öğe}")
combo = ttk.Combobox(root, values=["Seçenek 1", "Seçenek 2", "Seçenek 3"])
combo.pack(pady=20)
combo.current(0)
combo.bind("<<ComboboxSelected>>", combo_selected)
root.mainloop()
Bu kod, seçili öğeyi yazdıran combo_selected
adlı bir fonksiyon tanımlar. bind
metodu bu fonksiyonu <<ComboboxSelected>>
olayına bağlar.
4. Combobox Değerlerini Dinamik Olarak Güncelleme
Combobox seçeneklerini çalışma zamanında dinamik olarak güncelleyebilirsiniz:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Dinamik Combobox")
combo = ttk.Combobox(root)
combo.pack(pady=20)
def update_combo():
yeni_değerler = ["Yeni Seçenek 1", "Yeni Seçenek 2", "Yeni Seçenek 3"]
combo["values"] = yeni_değerler
button = tk.Button(root, text="Combobox'u Güncelle", command=update_combo)
button.pack()
root.mainloop()
Bir buton, combobox’ın values
özniteliğini değiştiren update_combo
fonksiyonunu tetikler.
5. Salt Okunur Combobox’lar Oluşturma
Combobox’ı salt okunur hale getirmek (doğrudan metin girişi engellemek) için state
seçeneğini kullanın:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Salt Okunur Combobox")
combo = ttk.Combobox(root, values=["Seçenek 1", "Seçenek 2", "Seçenek 3"], state="readonly")
combo.pack(pady=20)
combo.current(0)
root.mainloop()
state="readonly"
ayarlanması, doğrudan metin girişini devre dışı bırakır ve yalnızca açılır listeden seçim yapılmasına izin verir.