TCL(Tool Command Language) aslında çok güçlü ve geniş bir kullanım alanı sunan web ve masaüstü uygulamalarına dahil edebileceğiniz açık kaynak kodlu dinamik programlama dilidir. Genişletilebilir, gömülebilir ve çoklu platform desteğine sahiptir.
TK ise grafiksel kullanıcı arayüzü(GUI) tasarlamanın kolay yollarındandır. Linux'un belki de kimileri için can sıkıcı olan shell'inden bir nebze olsun uzaklaşmanın iyi bir "fikri"dir. "Sadece Linux için mi?" diye sorulacak olursa hayır! Windows, Mac OS ve diğer ortamlarda çalışabilecek uygulamalar geliştirebileceğiniz TK, sadece TCL için tasarlanmamıştır. Yani diğer dillere de destek vermektedir. Burada da C üzerinden gitmeye çalışacağız.
Öncelikle TCL/TK'in altyapısından bahsedelim. TCL/TK script tabanlı bir dildir. Dolayısıyla her script dili gibi yorumlanması gerekmektedir. Yani işletim sisteminizde çalışması için bir yorumlayıcı gerekiyor. Bunun ismi; wish... TCL/TK kullanabilmeniz için bunu yüklemiş olmanız gerekiyor. Yorumlayıcı Wish komutları standard input'tan ve ya dosyadan okuyarak yorumlar ve kullanılabilir arayüz öğelerine çevirir ve interaktif olarak çalışmasına olanak sağlar.
Hemen kaçınılmaz başlangıç olan "Hello World"ü bir yazdıralım. Sonuçta göreceğimiz ekran aşağıdaki gibi olacaktır.
Bu ekranı görmek isteyenlerin ise bir dizine .tcl uzantılı bir dosya açıp aşağıdaki kodları yazması gerekecektir.
#!/usr/bin/wish #Hello World yazar set b [button .b -text "hello world" -command exit] pack $b |
Buradakilerin ne anlama geldiğini anlatmakla devam edelim. İlk satıryorumlayıcı için eklenen ve tüm tcl programlarınızda eklemek durumunda olduğunuz satırdır. Bahsi geçen path; yorumlayıcının bulunduğu yoldur. Örneğin shell'de
$> cd ../../usr/bin
klasörüne gidip ls ile kontrol ettiğinizde wish8.5 (son versiyon)'i orada göreceksiniz.. Tabi eğer yüklüyse..
Devam edecek olursak 2. satır açıklama satırıdır. Bir sonraki set b ile aslında değişken tanımlamış oluyorsunuz. Ve bu değişkenin değeri [..] içindeki değerdir. Örneğin set b koymadan aynı programı yorumlarsanız ekranda aynı sonucu görüntülersiniz. Tabi en alttaki pack $b'yi pack .b yapmalısınız. Zira o artık bir değişken değil butonun ta kendisidir. Bir butonu aktive etmek istiyorsanız onu "pack .butonAdi" ile pencereye eklemeniz gerekmektedir. pack önüne aldığı widget'ı pencereye ekleyerek görünür kılar. Buton ismini başına . operatörünü koyarak tanıtmalısınız. Bu tüm komponentler için böyledir. -text "" ile arada boşluk bırakabileceğiniz butonun üstüne yazılacak değerleri belirtebilirsiniz. Eğer tek kelimeden ibaretse bu tırnaklara ihtiyaç duymuyor olacaksınız. "Peki bu butona tıklandığında ne olacak?" diye sorarsanız hemen bir sonraki komut -command devreye giriyor. exit varsayılan olarak tanımlanmış bir ifade ve o butona basıldığında pencerenin kapanmasını sağlıyor.
Çalıştırmak için ise ilgili dizine giderek
$> wish dosyaAdi.tcl
komutunu kullanarak shell'den çalıştırmak mümkündür.
Görüldüğü gibi 3 satırlık kodla diğer dillerde yapacağımız işlemi ne kadar da basite indirgedik! Peki TK'da başka neler var?
- Entry alanları
#!usr/bin/wish
entry .eInput -width 20 -textvariable input
pack .eInput
Burada yapılan .eInput adında ve girilen değeri input değişkenine atan bir entry alanı oluşturuldu.
- Label'lar
#!/usr/bin/wish
label .lLabel -text "Bir bir etikettir"
pack .lLabel
- Checkbutton, radiobutton...
#!/usr/bin/wish
radiobutton .rb1 -text "Sakarya" -variable font -value "a"
radiobutton .rb2 -text "İstanbul" -variable font -value "b"
radiobutton .rb3 -text "Ankara" -variable font -value "c"
pack .rb1 .rb2 .rb3
Burada rb1-2-3 isimlerinde 3 adet radio buton oluşturduk ve -text ile görünür değerlerini belirledik. Butonların arkaplanda kontrol edilebilecek değerleri ise -value ile belirlendi.
- Bunu eklediğimiz zaman pencerenin başlığını değiştirebiliriz;
wm title . "Pencere Başlığı"
- Configure komutu
#!/usr/bin/wish
button .bHello -text "Hello"
pack .bHello
.bHello configure -text "Hi!"
- Widget Ayarları
- -width ve -height: Widget'ın genişlik ve yükseklik değerleri sayısal karakterlerle girilir.
- -relief: Widget'ın görünümünü belirler. "raised", "sunken", "flat", "groove", "ridge" değerlerini alır.
- -borderwidth: Eğer -relief ile oluşturulmuşsa border'a ait genişliği tanımlar
- -fg ve -bg: Yazıya ve arkaplana ait renk değerlerini değiştirir. Parametre olarak red, blue, green, grey tipinde değerleri alabilir.
- -text: Bileşenin yazı değerini belirler.
- -textvariable: Widget eğer bir değer alabiliyorsa bu değerin bir değişkene alınmasını sağlar.
Hiç yorum yok:
Yorum Gönder