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