- Standart bir kullanıcı arayüzü(UI) ne yapmalıdır?
- Kullanıcı arayüzü yazan bir programcı ilk olarak kullanıcıya neler göstereceğini belirlemelidir
- Kullanıcı arayüzünün hangi işlemleri yapacağını belirlemelidir.
- Görüntü ile yapılan işlemleri uygun bir biçimde birbiriyle eşleştirmelidir.
- Kullanıcı girişini gerçekleştirmeye imkan tanımalıdır.
- Temel Kullanıcı Arayüzü Terimleri
- Bir kullanıcı arayüzü, arayüz oluşturmak adına programcıya "widget" adı verilen bileşenler sunar. Bu widgetler arayüzde görüntülenen şeylerdir. Bunlar, buton, pencere, menü, scrollbar vb. olabilir.
- Event handlers sayesinde herhangi gerçek zamanlı bir eylemden haberimiz olabilir. Örneğin kullanıcının imleci pencere üzerinde dolaştırması, klavyeye basması, fareye tıklaması gibi.
- Binding ise widget'ler ile event handler'ları birbirine bağlamamızı sağlar.
- Event loop ise programın kullanıcıdan veri girmesini beklediğimiz kısımdır.
from tkinter import *
root = Tk()
root.mainloop()
Birinci satırda tkinter kütüphanesini kodumuza ekliyoruz. İkinci satırda root değişkenine tkinter.Tk sınıfının bir örneğini eşitliyoruz. İsterseniz type fonksiyonu ile araştırabilirsiniz. Son satırdaysa event loop oluşturuyoruz. Event loop kullanıcıdan bir destroy eventi gelinceye kadar event handlerlar aracılığıyla veri girişini kontrol eder.
Container
Burada widgetları nasıl kullanacağımıza karar vermeden önce containerlardan bahsetmemiz gerekiyor. Bir widgetı direkt olarak tkinter.Tk nesnesinin üzerine değil container'ın üzerine ekleriz. Bu çeşitli şekillerde arayüz oluşturma deneyimimizi geliştirir, kolaylaştırır. Her tkinter.Tk nesnesinde yeni bir pencere oluştururuz. Ancak container'lar sayesinde tek bir pencereyi ebeveyn(parent) olarak seçip söz konusu container'a widgetleri ekleyebiliriz. Birden fazla container ile tek bir pencerede çalışabiliriz.
from tkinter import *
root = Tk()
container = Frame(root)
container.pack()
root.mainloop()
Burada Frame(bir container) nesnesi oluşturup container değişkenine atadık. Parametre olarak ebeveyn tkinter.Tk nesnesini seçtik(root). pack metodu nesnelerin arayüzde gözükmesini sağlar. Bu iki işlem - ebeveyn ile ilişkilendirme ve pack - Tkinter programlamada sıkça karşımıza çıkacak.
Pack Hakkında Not: Aslında Tkinter'ın kendisi Tcl/Tk ile arayüz oluşturabilmek için oluşturulan bir Python API'sidir. Pack metodu da Tkinter kütüphanesi ile aramızda köprü oluşturarak widget ve containerların nasıl görüntüleneceğini belirler. Nitekim kendisi bir geometry manager'dır.
Not: tkinter.Tk ile oluşturulan pencerenin kendisi de container içermektedir. Diğerlerinden farklı olarak cavity adı verilmiştir bu container'a. Cavity, elastik bir biçimde dizayn edilmiştir. Üzerine eklenen widget ve containerların boyutuna göre kendi boyutlarını belirler.