Bu makalenin farklı dillerde bulunduğu adresler: English Castellano Deutsch Francais Nederlands Russian Turkce |
by Charles Vidal Yazar hakkında: Paris'teki bir gastronomic lug'ın başkanı. GNU ve açık kod felsefesini seviyor çünkü ikiside insanların bilgiyi paylaşmasına izin veriyor. Saksafonunu çalmak için daha çok zaman bulmak istiyor. İçerik:
|
Özet:
Bu makale Tck grafik araçlarının özelliklerini tanıtır: Tk. Birkaç satırlık kodla bir arayüz (GUI: Graphical User Interface) yapmanın ne kadar kolay olduğunu göreceğiz.
Tk, Tcl diline grafik araçları sağlamak için yapılmıştır. Biz genellikle buna Tcl/Tk deriz (Tikel/Tikey diye okunur).
Tk, kullandığımız işletim sisteminin görünüşünde bir çok platformlu grafik araçları programı olarak tasarlanmıştır. Çok platformlu olan Tcl diline tam olarak entegre olur. Tcl/Tk'in en büyük avantajı basitliğidir. Bu ikili, hızlıca, taşınabilen uygulamalar yapmanızı sağlar. Tcl için tclsh'ın olması gibi, Tk için de wish vardır.
pack [ label .l -text "Bonjour monde" ]
#include <gtk/gtk.h> Int main( int argc, char *argv[] ) { /* GtkWidget widgetlar için depolama türüdür */ GtkWidget *window; GtkWidget *button; gtk_init(&&argc, &&argv); /* yeni bir pencere oluştur */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); button = gtk_button_new_with_label ("Bonjour Monde"); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show (button); /* ve pencere */ gtk_widget_show (window); gtk_main (); return(0); }... veya Motif'le karşılaştırın
/* COMPILE cc xmhello.c -L/usr/X11R6/lib -lXm -lXt -lX11 -lXmu -o xmhello */ #include <Xm/PushB.h> #include <Xm/Form.h> /* Widget */ Widget main_widget, pushb; main(int argc, char **argv) { Widget form; Arg args[1]; int ac = 0; XmString label_str; main_widget = XtInitialize(argv[0], "test", NULL, 0, &&argc, argv); label_str = XmStringCreate("Bonjour Monde", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[ac], XmNlabelString, label_str); ac++; pushb = XmCreatePushButton(main_widget, "hello", args, ac); XtManageChild(pushb); XtRealizeWidget(main_widget); XtMainLoop(); }Fakat scriptik bir dilin kaynak koduyla, derlenmiş biçiminin karşılaştırması zordur. Bunun yanında, uygulamanın hafızadaki boyutu gibi diğer hususları da göz önüne almalıyız. Bu nedenle, tek söyleyebileceğimiz klasik "Merhaba dünya" programının Tk'le gerçekten kolay bir şekilde yapılabildiğidir. Araçların görünüşünden çok; genel kavramları ve düşünceleri dikkate almalıyız.
Mevcut tüm widgetların bir gösterisini izlemek için, /usr/local/lib/tk8.0/demos/ dizinine gidin ve widget'ı çalıştırın.
Bu grafiksel nesneler takımı sınırlandırılmıştır (ağaç widgetı,combobox ....). Bununla birlikte, bazı kişiler veya kuruluşlar bazı değerli ilaveler yapmışlardır.En ünlüsü : Tix the widgets Incr Tcl ve son zamanlarda müthiş BWidget, tüm ilaveler scriptics yöresinden elde eilebilir.
label .mylabel -text "merhaba dünya"
Gördüğünüz gibi işleyiş, önce grafiksel nesnenin adını vermekle, burda .label, sonra taşıyıcının adını vermekle ( . ana penceredir) ve en sonunda özelliklerin tanımlanmasıyla (-text " merhaba dünya ") gerçekleşir. Burda, grafiksel nesnenin oluşturulmasından sonra parametrelere ulaşmanın ve onları değiştirmenin mümkün olduğu dikkatimizi çekmeli.
.mylabel cget text merhaba dünya
.mylabel configure -text "Bonjour Monde Fransızca :)"
puts [label .mylabel -text "merhaba dünya"]
Etiket bir komutun sonucunu da gösterebilir:
.mylabel configure -text " Tarih: [exec date ]"Seçenekleri listelemek için (verilen bir widget için), Wish'te etkileşimli yoldan çalışarak, configure komutuna verebilirsiniz.Bunun için, ".mylabel configure" yazın.
Aslında etiket tipinde bir nesne oluşturdunuz ama bunun ekranda görünmesini istemediniz. Böyle oldu çünkü nesnenin ekranda görünmesi için bazı bilgiler gerekiyor ve siz bunu daha sağlamadınız. Bu gereken bilgi; nesnenin hangi layout'a (layout pencereleri konumlandırmaya yarayan bir yöneticidir) konulacağıdır.
Mevcut layoutlar:
Tüm özellikleriyle Merhaba Dünya
label .mylabel -text "merhaba dünya"
pack .mylabel
Veya tek satırda:
pack [label .mylabel -text "merhaba dünya"]
Buton
Eğer buton oluşturursak:
button .myboutton -text "merhaba dünya" -command "exit"
pack .myboutton
Butonun parametre olarak komut (-command) özelliği (sadece bir) dikkatimizi çeker.
Butona tıkladığımızda bu tcl komutu çalıştırılır.
Bu örnekte, çalıştırılacak komut exit 'tir, Bu komut programdan çıkılmasını sağlar.
Örnek
Checkbutton ve radiobutton.
checkbutton $w.b1 -text "Wipers OK" -variable wipers -relief flat -onvalue "Ok" -offvalue "not Ok"
radiobutton .b1 -text "Premier " -variable size -value 1
radiobutton .b2 -text "Second " -variable size -value 2
entry .e -textvariable toto -width 40
Örnek:
pack [ button .b1 -text top ] -side top pack [ button .b2 -text bottom ] -side bottom pack [ button .b3 -text right ] -side right pack [ button .b4 -text right ] -side left |
Widget'ı ayrıca şu şekilde de ayarlayabiliriz: option -expand (yes|no) -fill ( x|y| both)
Örnek: place [ label .l -text "With Place"] -x 100 -y 100 .l configure -bg red
label .mainlbl2 -text "Label 2" -bd 2 -relief sunken
grid .mainlbl2 -row 0 -column 1 -sticky news
label .mainlbl1 -text "Label 1" -bd 2 -relief raised
grid .mainlbl1 -row 0 -column 0 -sticky news
label .mainlbl3 -text "Label 3" -bd 2 -relief solid
grid .mainlbl3 -row 1 -column 0
label .mainlbl4 -text "Label 4" -bd 2 -relief groove
grid .mainlbl4 -row 1 -column 1
winfo ile oluşturulmuş olan grafiksel nesnelerin listesini alabiliriz.
winfo exists name_objectOluşturulmuş olan tüm widgetların listesini almak için şu komutu kullanabiliriz:
winfo children .Tcl/Tk'in bu işlevselliği başka hiçbir derlenmiş grafik araçlarında yoktur ( gtk, awt, motif ...).
Tk'in olayı değerlendirmesi ve komut çalıştırması -command verilmesine bağlıdır. Kullannıcının olayları tem olarak yönetmek isteyebileceği veya bir widget için birkaç olay yönetmek isteyebileceği durumlar da var. canvas böyle bir widgettır.
bind widgetın_adı olayın_adı tcl_kodu.
bind all <Control-c> {destroy .}
#!/bin/sh # the next line restarts using wish \ exec wish8.0 "$0" "$@" global tabgui proc makegui { } { global tabgui # # Liste için kaydırma çubuklarının oluşturulması # dikey kaydırma çubuğu dikey olaray ekranı kaplayacak şekilde sağa konumlandırılır # ve yatay kaydırma çubuğu yatay olarak ekranı kaplayacak şekilde aşağıya konumlandırılır # set tabgui(scrollv) [scrollbar .scrollv -command ".list yview"] pack $tabgui(scrollv) -side right -fill y set tabgui(scrollh) [scrollbar .scrollh -command ".list xview" -orient horizontal ] pack $tabgui(scrollh) -side bottom -fill x # # Listenin oluşturulması, kaydırma çubuklarıyla ilişkilendirilmesi # # set tabgui(list) [listbox .list \ -yscroll "$tabgui(scrollv) set" \ -xscroll "$tabgui(scrollh) set" \ -relief sunken -width 20 -height 20 \ -setgrid yes ] pack $tabgui(list) -side left -fill both -expand yes wm minsize . 1 1 } # # Arabirimin oluşturulması # makegui if $argc>0 {set tarfile [lindex $argv 0]} else {puts stderr "tar file missing" ; exit} set command "tar -tzvf $tarfile" set tube [ open |$command r] while {![eof $tube]} { set tarresult [ gets $tube ] $tabgui(list) insert end $tarresult } bind all <Control-c> {destroy .}
|
LinuxFocus Editörleri tarafından elde edilmiş yöreler
© Charles Vidal LinuxFocus.org 2000 Bir hatayı LinuxFocus'a bildirmek veya yorum göndermek için buraya tıklayın |
Çeviriler Hakkında:
|
2000-10-28, generated by lfparser version 1.8