Bu makalenin farkl� dillerde bulundu�u adresler: English Castellano Deutsch Francais Turkce |
taraf�ndan Hilaire Fernandes Yazar hakk�nda: Hilaire Fernandes, Gnome masa�stleri i�in �cretsiz e�itim yaz�l�mlar�n�n geli�imini tan�tan bir organizasyon olan OFSET 'in ikinci ba�kan�d�r. Ayr�ca, �d�l kazanan Dr.Geo ad�ndaki etkile�imli geometri yaz�l�m�n� yazm��t�r ve �u s�ralar Dr.Genius ad�nda Gnome masa�st�nde �al��an ba�ka bir matematik e�itim yaz�l�m� ile u�ra�maktad�r. ��erik:
|
�zet:
Bu makaleler serisi �zellikle Gnome programlama ve GNU/Linux 'a yeni ba�layanlar i�in yaz�lm��t�r. Se�ilen geli�tirme dili Pyhon, C gibi derlemeli dillerde yayg�n olan a��r� y�kten ka��nmaktad�r. Bu makaleyi okumadan �nce Python programlama hakk�nda bir miktar bilgi gerekmektedir.
Bu makalede tan�mlanan program� �al��t�rabilmek i�in en az�ndan �una ihtiyac�n�z var:
Pyhton-Gnome ve LibGlade 'i kaynaklardan y�klemek i�in:
./configure make make install |
ufak bir hile olacakt�r. (Daha fazla a��klama i�in
[
http://www.linuxgazette.com/issue38/pollman.html ]
Ayr�ca Python ortam de�i�keni PYTHONPATH 'in Python-Gnome
birimlerinin y�klendi�i yola ayarl� olup olmad���n� kontrol etmelisiniz.
Bu yol /usr/local/lib/python1.5/site-packages ya da
/usr/lib/python1.5/site-packages/ olabilir. Burada Gnome ve LibGlade i�in
gerekli b�t�n ba�lant�lar� bulursunuz, mesela libglade.py
birimini orada bulabilirsiniz. PYTHONPATH 'i ayarlamak i�in
.bash_profile 'a sadece �unu ekleyin:
PYTHONPATH=/usr/local/lib/python1.5/site-packages export PYTHONPATH |
Unutmay�n ki bu de�i�ken tak�m�n� elde etmek i�in Python kodunuzu bir terminalden �al��t�rman�z gerekebilir.
Glade, Damon Chaplin taraf�ndan geli�tirilen bir aray�z kurucusudur. Gnome/Gtk grafiksel kullan�c� aray�zlerinin grafiksel ve etkile�imli yap�lar�na izin verir. Glade'de olu�turulan aray�z bir xml dosyas�nda saklanabilir ya da do�rudan C kaynak a�ac�nda yeralmak �zere C koduna ihra� edilebilir. Glade ayr�ca aray�z�n �e�itli k�s�mlar�na ili�tirilecek olan i�leyicilerin-fonksiyonlar�n- adlar�n�n tan�mlanmas�na izin verir. Mesela belirli bir men� par�as�na bas�ld���nda �a�r�lacak olan fonksiyon (ad�).
LibGlade, James Henstridge'in bir Glade xml dosyas� taraf�ndan temsil edilen aray�z� olu�turmak i�in yazm�� oldu�u bir k�t�phanedir. Uygulama sadece xml dosyas�ndan - genelde .glade uzant�s�yla biten - haberdar olmay� gerektirir ve sonra LibGlade k�t�phaneyi bundan olu�turabilir. James Henstridge ayr�ca Gnome-Python paketinde bulunan LibGlade Python ba�lant�s�n� yazm��t�r. LibGlade ayr�ca .glade dosyas�nda tan�mlanan i�leyicicilerden Python kodunda tan�mlanan fonksiyonlara otomatik-ba�lant�ya izin verir.
A�a��daki garfik genel mekanizmay� g�stermektedir. Python ba�lant�s�n�n nas�l uyguland���n� anlamak i�in bazen PYTHONPATH 'te yerle�mi� Gtk, Gnome ve LibGlade Python birimlerine bakmak ve onlar� C Gtk/Gnome geli�tirici d�k�manlarla kar��la�t�rmak gerekir.
Gnome-Python programlamaya bir ilk yakla��m olarak, �ocuklar�n ayn� renkteki �ekilleri tan�mas�n� gerektiren basit bir renk oyununu �neririm. Bu �rnek grafi�e y�neliktir ve Gnome Canvas ve Gnome Uygulama Penceresi gibi Gnome'un g�zel �zelliklerini sunar. oyunun kurallar� olduk�a basittir: Oyun tahtas� de�i�ik renlere sahip 16 �ekil - daireler, y�ld�zlar ve kareler - ile doldurulmu�tur. Bu 16 �ekil 8 �ift �zde� renge b�l�nm��t�r. Oyunu bitirmek i�in sadece bu 8 �ifti ba�ar�yla se�mek gerekir. Fikir edinmek i�in bu makalenin sonundaki kaynak koda bakmak ve sonra buradan tekrar ba�lamak isteyebilirsiniz.
H�nerli Aletler
Glade'i ba�latt�ktan sonra iki pencereniz olacakt�r. Birisi Palette ad�ndaki h�nerli alet kutusudur. Bu pencerede GTK+ Basic, GTK+ Additional ve Gnome i�inden aletin t�rlerini se�ebilirsiniz. E�er Gnome aletiniz yoksa Glade, Gnome deste�i olmadan derlenebilir. Kaynak Glade paketinin configure(yap�lanmas�)'unu kontrol edin. configure --help konfig�rasyon se�eneklerini a��klar.
As�l alandaki �b�r pencere yarat�lan aletleri listeler.
Glade ile �nce Gnome Uygulama Penceresini yarataca��z. Bu alet menu �ubu�u ve alet �ubu�u olan bir penceredir. Gnome Uygulama Penceresinin dibinde ayr�ca bir durum �ubu�u bulunur. Gnome Uygulama Penceresini yaratt�ktan sonra Widget Tree(alet a�ac�) diyalo�unu a��n (Glade'de g�r�n�m men�s�nde bulabilirsiniz). �imdi bu alette tam olarak nelerin bulundu�unu ke�fedebilirsiniz.
Bundan sonra Gnome uygulama aletinin as�l alan�na bir kanvas ekleyin. properties(�zellikler) diyalo�undan maksimal koordinatlar� 400'e, maksimal y�kseklik ve geni�li�i de 400'e ayarlay�n.
�imdi bir Gnome hakk�nda Diyalo�u olu�turun. Diyalo�un i�eri�ini Alet tabakas�ndaki properties(�zellikler) diyalo�undan ayarlayabilirsiniz.
B�t�n bu aletler Palette 'in Gnome kategorisinde yeralmaktad�r.
�imdi kullan�lmayan ikon d��melerini ve menu par�alar�n� kald�r�n. Alet �ubu�undaki Open(A�) ve Save(Kaydet) ikon d��melerini kald�r�n. Sonra men� �ubu�unu d�zenleyin (farenin sa� tu�uyla t�klay�p edit menu(men�y� d�zenle) 'y� se�in) ve File->New, File->Exit, Setting->Preferences ve Help->About hari� b�t�n men�leri kald�r�n.
Alet ve i�leyicilerin isimlerini ayarlamak
A�a��daki isimleri bu aletlere uygulay�n, b�ylece onlar� bu isimlerle Python'da kullanabiliriz:
��leyici isimleri, belirli bir alette bir olay meydana geldi�inde �a�r�lacak fonksiyon isimleridir. Bunun anlam�, Python'daki fonksiyonlar� bu isimleri kullanarak - ileride g�rece�iniz gibi - tan�mlayaca��m�zd�r. �rne�in, kullan�c� yeni ikon d��mesine bast���nda oyunu yenileyecek bir fonksiyon �a��rmak istiyoruz diyelim. Bunu Glade'den kurmak i�in ilk �nce aleti se�meniz, sonra da properties(�zellikler) diyalo�undaki Signals(Sinyaller) tabakas�ndan ayarlamad�nz gerekir.
Bizim �rne�imiz, sinyal t�klan�r. ��leyici, fonksiyon ad�d�r. A�a��daki diziler, kullan�lan t�m sinyalleri ve i�leyicileri sunar:
about(hakk�nda) diyalo�unda:
Widget name | Signal | Handler |
---|---|---|
about | clicked | gtk_widget_destroy |
about | close | gtk_widget_destroy |
about | destroy | gtk_widget_destroy |
gtk_widget_destroy i�leyicisi GTK'da �ntan�ml�d�r. Sadece aleti yokeder.
colorApp penceresinde. �lk olarak, Glade par�alar men�s� i�in sinyalleri/i�leyicileri otomatik olarak se�er. �simlerini kontrol edebilirsiniz. �simlerini bu dizinin sonuna ekledim. Hem yeni men� par�as�n�n hem de yeni ikon d��mesinin ayn� i�leyiciyi payla�aca��n� g�receksiniz, normal olarak benzer ama�lar� vard�r:
Widget name | Signal | Handler |
---|---|---|
button1 (new icon button on the toolbar |
clicked | on_new_activate |
new | activate | on_new_activate |
colorApp | destroy | on_exit1_activate |
exit1 | activate | on_exit1_activate |
about1 | activate | on_about_activate |
Son dokunu�
Glade alet �ubu�undaki Options(Se�enekler) d��mesinden Project Options '� �a��r�n. General(Genel) tabakas�nda, plan giri�lerini a�a��daki gibi ayarlay�n:
Aletleri temsil eden dosya color.glade 'dir. Yolu, kendi ana dizininize ayarlay�n.
�imdi File(Dosya) men�s�nden dosyay� kaydedin. Kaynak kodunu kurmay�n, bu �zelli�i biz kullanm�yoruz.
Glade ile i�imiz �imdi bitti, art�k Python ile ba�layabiliriz.
Kodun tamam� d�k�man�n sonundad�r. Kod, color.glade dosyas�yla ayn� yere kaydedilmelidir.
from math import cos, sin, pi from whrandom import randint from gtk import * from gnome.ui import * from GDK import * from libglade import * |
math ve whrandom birimlerinden, Gnome ait olmayan cos, sin, randint gibi �zel fonksiyonlar� ve pi de�i�kenini dahil ediyoruz. Gnome'a �zel birimler gtk, GDK ve gnome.ui 'dir. C'de, gnome.h'yi dahil etmek b�t�n Gnome ba�l�klar�n� dahil etmemizi sa�lar. Pyhton'da, ilk �nce Gnome fonksiyonunun kullanmak istedi�iniz ba�lant�s�n�n hangi birimde yerle�ti�ini bulman�z gerekir. �rne�in, bir terminal penceresinden (kabuk)a�a��daki komutla "canvas" dizisini i�eren birimi arayabilirsiniz:
cd /usr/local/lib/python1.5/site-packages/gnome grep canvas *.py |
Yukar�daki komut Gnome ba�lant�s�n�n /usr/local/lib/python1.5/site-packages alt�nda kurulmu� oldu�unu varsayar.
Bu �renekte �ekiller - �zellikle y�ld�zlar, daireler ve kareler - i�in Gnome Canvas'� kullan�yoruz. Kanvas grafik par�alar� (elips, nokta, do�ru, dikd�rtgen), yaz� par�alar� ve hatta aletler i�in bir yer tutucudur. Asl�nda bir kanvas baz� kanvas gruplar�n� da i�erebilir. Sonu�ta bir kanvas grubuna kanvas par�alar� - bizim �ekillerimiz - yerle�tirilebilir. Varsay�lan durumda, bir kanvas k�k kanvas grubu ad�nda varsay�lan bir kanvas grubunu i�erebilir. Biz bu grubu �ekillerimizi yerle�tirmek i�in kullanaca��z.
�lk ba�ta baz� evrensel de�i�kenler tan�mlan�r:
�a�r�lacak ilk fonksiyon - initColor - color.glade dosyas�ndan aletler olu�turur ve i�leyicileri otomatik olarak aletlere ba�lar:
def initColor (): global rootGroup, canvas wTree = GladeXML ("color.glade", "colorApp") dic = {"on_about_activate": on_about_activate, "on_exit1_activate": mainquit, "on_new_activate":on_new_activate} wTree.signal_autoconnect (dic) canvas = wTree.get_widget ("canvas") rootGroup = canvas.root () |
Bir aleti olu�turmak i�in GladeXML fonksiyonu kullan�l�r. Tabii ki color.glade dosyas�na giden yolu ayarlaman�z gerekir. Bizim Glade ile tan�mlad���m�z colorApp Gnome Uygulama Penceresini olu�turur ve g�sterir. D�n�� de�eri kullan��l� y�ntemlerle bir nesnedir - ger�ekte bir s�n�f.
Sonra Python'da tan�mlad���m�z i�leyicileri, color.glade 'de tan�mlad���m�z aletlere ba�lar�z.
Bunun i�in, color.glade dosyas�nda tan�mlanan i�leyici adlar�n�n anahtarlar�n�
tutan bir s�zl�k olu�turmam�z
gerekir: on_about_activate, on_exit1_activate ve
on_new_activate. Bu anahtarlarla ba�lant�l� de�erler Python'da tan�mlanm�� fonksiyon isimleridir.
Sonu� olarak, signal_autoconnect metodu i�in geri kalan k�sm�n� bizim i�in yapar.
En sonunda GladeXML 'in �a�r�l��� s�resince olu�turulan kanvas�n referans�n� - Python'da bir GnomeCanvas nesnesi - ve k�k kanvas grubunu - bir GnomeCanvasGroup nesnesi - geri getiririz.
Faydal� tavsiyeler
Python i�in Gnome ba�lant�s�n� kapsayan ger�ek bir elkitab� yoktur. Ancak, Gnome sanal y�relerinde C'de Gnome programlama ile ilgili pek �ok d�k�man mevcuttur. Bu d�k�manlara bakmak faydal� olabilir fakat Python i�in Gnome ba�lant�s�na da bakman�z da gerekecektir:
Ba�lant� �urada yerle�mi�tir: /usr/local/lib/python1.5/site-packages/gnome/ ya da /usr/lib/python1.5/site-packages/gnome/
Ba�lant�ya g�zatmak baz� �eyleri g�sterir:
Python'daki her Gnome kullan�l���nda ilgili d�k�manlara ula�mak i�in ayn� �eyleri yapabiliriz. Bu fonksiyonlar hakk�nda daha fazla bilgi alman�z i�in ilgili Gnome d�k�manlar�n� okuyun.
GUI'ye oto-ba�lant� i�in �� i�leyici mevcuttur. Bunlar on_about_activate, on_new_activate ve mainquit. Sonuncusu ger�ekte i�leyi�i durduran ve Python'dan ��k��� sa�layan bir Python fonksiyonudur.
def on_about_activate(obj): "display the about dialog" about = GladeXML ("color.glade", "about").get_widget ("about") about.show () |
Bu i�leyici Hakk�nda(About) Diyalo�unu a�ar. �ncelikle hakk�nda(about) diyalo�unu hat�rlatal�m - ger�ekte LibGlade bu diyalo�u GladeXML nesnesi sayesinde kurar. Hat�rlay�n; GladeXML, get_widget metodunu i�eren bir Python nesnesidir. Bu metod show metodunu i�eren bir GtkWidget nesnesi d�nd�r�r.
Tavsiyeler
gtk.py ba�lant�s�ndaki GtkWidget nesnesini aray�n. Bu nesnenin bir show metoduna sahip oldu�unu g�rebilirsiniz. Bir �nceki i�leyici g�vdesi �u �ekilde yaz�labilir: GladeXML("color.glade","about").get_widget("about").show().
def on_new_activate (obj): global rootGroup, colorShape for item in colorShape: item.destroy () del colorShape[0:] buildGameArea (rootGroup) |
Bu i�eyici yeni oyun alan�n� tekrar in�a eder. �ncelikle varolan �ekiller yokedilir. �ekiller GtkObject nesnelerinden t�retilen GnomeCanvasItem nesneleridir. destroy metodu GtkObject nesnesinde yeral�r. Daha sonra yeni oyun alan� in�a edilir.
�ekli tan�mlama
buildGameArea fonksiyonu GnomeCanvasGroup grubunda oyun alan�n�n yarat�lmas�n� d�zenler. �ekiller - GnomeCanvasItem -, buildShape fonksiyonunun �a�r�lmas�yla olu�ur. Bu �ek,ller daire, kare ya da y�ld�z olabilir.
Yarat�lan �ekle ba�l� olarak a�a��daki kodla �ekiller yarat�l�r:
item = group.add ("ellipse", x1 = x - r, y1 = y - r, x2 = x + r, y2 = y + r, fill_color = color, outline_color = "black", width_units = 2.5) [...] item = group.add ("rect", x1 = x - a, y1 = y - a, x2 = x + a, y2 = y + a, fill_color = color, outline_color = "black", width_units = 2.5) [...] item = group.add ("polygon", points = pts, fill_color = color, outline_color = "black", width_units = 2.5) |
group de�i�keni GnomeCanvasGroup nesnesinin referans�n� tutar. E�er ui.py ba�lant�s�n�n i�ine bakarsak, GnomeCanvasGroup grubunun bir add metodu oldu�unu g�r�r�z. �lk arg�man olan tp eklenecek par�an�n t�r�n� i�eren bir dizi bekler. Sonraki arg�manlar� anahtar kelime arg�manlar� ve de�erlerinden olu�an �iftlerdir, her biri bir s�zl��e kar�� gelir. Mevcut anahtar kelimelerin t�m listesini elde etmek i�in ui.py 'deki GnomeCanvasRect, GnomeCanvasEllipse ve GnomeCanvasPolygon nesnelerine bir g�z at�n.
elips ve dikd�rtgen birbirlerine benzerler, iki apsis ve ordinat koordinatlar� birbirine z�t iki tepe noktas� tan�mlar, �st-sol ve alt-sa�. Kanvas�n orijin noktas� varsay�lan de�er olarak kanvas�n �st-sol k�sm�nda yerle�mi�tir. polygon points anahtar kelimesinin de�erini bekler, bu anahtar kelime �okgenin noktalar�n� belirleyen �ift koordinatlar�n listesidir.
�ekle olay ekleme
�imdi yaratt���m�z her �ekle bir olay ba�layaca��z. Bu buildShape fonksiyonunun sonunda yap�l�r:
item.connect ('event', shapeEvent) colorShape.append (item) |
Sadece GnomeCanvasItem '�n ata nesnelerinden olan GtkObject 'in connect metodunu kullanaca��z. Bunun ilk arg�man� sinyaldir. GnomeCanvasItem '�n b�t�n olay �e�itlerini kapsayan event adl� tek bir sinyali oldu�undan dolay� yaln�zca bu arg�man� event olarak ayarlayaca��z. �kinci arg�man bizim yazd���m�z i�leyici ad�d�r, burada shapeEvent olacak. B�y�k olas�l�kla ���nc� arg�mana veri ge�irebiliriz, ama burada buna ihtiyac�m�z yok. ��te bu kadar!
�imdi �ekiller i�in i�leyici yarat�l���:
def shapeEvent (item, event): global selectedItem, itemToSelect, colorShape if event.type == ENTER_NOTIFY and selectedItem != item: #highligh outline item.set(outline_color = 'white') elif event.type == LEAVE_NOTIFY and selectedItem != item: #unlight outline item.set(outline_color = 'black') elif event.type == BUTTON_PRESS: #select the item if not selectedItem: item.set (outline_color = 'white') selectedItem = item elif item['fill_color_gdk'] == selectedItem['fill_color_gdk'] \ and item != selectedItem: #destroy both item item.destroy () selectedItem.destroy () colorShape.remove (item) colorShape.remove (selectedItem) selectedItem, itemToSelect = None, itemToSelect - 1 if itemToSelect == 0: buildGameArea (rootGroup) return 1 |
��leyici �a�r�ld���nda, item de�i�keni olay�n olu�tu�u �eklin referans�n� i�erir ve event de olay� i�erir. GdkEvent olay�nda sadece �� �e�it olayla ilgilenece�iz:
B�t�n Python kodunu Gnome'a uygun olarak b�rakmad�m, anla��lmas� �ok da g�� olmamal�. Bu basit dersteki temel amac�m baz� �eylerin nas�l �al��t���n� kendi kendinize anlayabilece�inizi g�stermekti: Python i�in Gnome ba�lant�s�na bakmak ve C programlama i�in Gnome d�k�manlar�n� okumak. Tabii ki Gnome Canvas ve Glade/LibGlade'in ne kadar kolay ve g��l� oldu�unu da g�sterdim. �u andan itibaren bu kodu geni�leterek yapabilece�iniz pek �ok �ey var. (Bu makale i�in kaynak dosyalar� burada bulabilirsiniz.)
#!/usr/bin/python # Couleur - Teo Serie # Copyright Hilaire Fernandes 2000 # Release under the terms of the GPL licence version 2 # You can get a copy of the license at http://www.gnu.org # # Select shapes with same color # from math import cos, sin, pi from whrandom import randint from gtk import * from gnome.ui import * from GDK import * from libglade import * width, itemToSelect = 400, 8 selectedItem = rootGroup = canvas = None # to keep trace of the canvas item colorShape =[]; def on_about_activate(obj): "display the about dialog" about = GladeXML ("color.glade", "about").get_widget ("about") about.show () def on_new_activate (obj): global rootGroup, colorShape for item in colorShape: item.destroy () del colorShape[0:] buildGameArea (rootGroup) def shapeEvent (item, event): global selectedItem, itemToSelect, colorShape if event.type == ENTER_NOTIFY and selectedItem != item: #highligh outline item.set(outline_color = 'white') elif event.type == LEAVE_NOTIFY and selectedItem != item: #unlight outline item.set(outline_color = 'black') elif event.type == BUTTON_PRESS: #select the item if not selectedItem: item.set (outline_color = 'white') selectedItem = item elif item['fill_color_gdk'] == selectedItem['fill_color_gdk'] \ and item != selectedItem: #destroy both item item.destroy () selectedItem.destroy () colorShape.remove (item) colorShape.remove (selectedItem) selectedItem, itemToSelect = None, itemToSelect - 1 if itemToSelect == 0: buildGameArea (rootGroup) return 1 def buildShape (group, number, type, color): "build a shape of 'type' and 'color'" global colorShape w = width / 4 x, y, r = (number % 4) * w + w / 2, (number / 4) * w + w / 2, w / 2 - 2 if type == 'circle': item = buildCircle (group, x, y, r, color) elif type == 'squarre': item = buildSquare (group, x, y, r, color) elif type == 'star': item = buildStar (group, x, y, r, 0.4, randint (3, 15), color) elif type == 'star2': item = buildStar (group, x, y, r, 0.6, randint (3, 15), color) item.connect ('event', shapeEvent) colorShape.append (item) def buildCircle (group, x, y, r, color): item = group.add ("ellipse", x1 = x - r, y1 = y - r, x2 = x + r, y2 = y + r, fill_color = color, outline_color = "black", width_units = 2.5) return item def buildSquare (group, x, y, a, color): item = group.add ("rect", x1 = x - a, y1 = y - a, x2 = x + a, y2 = y + a, fill_color = color, outline_color = "black", width_units = 2.5) return item def buildStar (group, x, y, r, k, n, color): "k: factor to get the internal radius" "n: number of branch" angleCenter = 2 * pi / n pts = [] for i in range (n): #external points of the star pts.append (x + r * cos (i * angleCenter)) pts.append (y + r * sin (i * angleCenter)) #internal points of the star pts.append (x + r * k * cos (i * angleCenter + angleCenter / 2)) pts.append (y + r * k * sin (i * angleCenter + angleCenter / 2)) pts.append (pts[0]) pts.append (pts[1]) item = group.add ("polygon", points = pts, fill_color = color, outline_color = "black", width_units = 2.5) return item def getEmptyCell (l, n): "get the n-th non null element of l" length, i = len (l), 0 while i < length: if l[i] == 0: n = n - 1 if n < 0: return i i = i + 1 return i def buildGameArea (group): global itemToSelect, selectedItem itemColor = ['red', 'yellow', 'green', 'brown', 'blue', 'magenta', 'darkgreen', 'bisque1'] itemShape = ['circle', 'squarre', 'star', 'star2'] emptyCell = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] itemToSelect, i, selectedItem = 8, 15, None for color in itemColor: # two items of same color n = 2 while n > 0: cellRandom = randint (0, i) cellNumber = getEmptyCell (emptyCell, cellRandom) emptyCell[cellNumber] = 1 buildShape (group, cellNumber, itemShape[randint (0, 3)], color) i, n = i - 1, n - 1 def initColor (): global rootGroup, canvas wTree = GladeXML ("color.glade", "colorApp") dic = {"on_about_activate": on_about_activate, "on_exit1_activate": mainquit, "on_new_activate":on_new_activate} wTree.signal_autoconnect (dic) canvas = wTree.get_widget ("canvas") rootGroup = canvas.root () initColor () buildGameArea (rootGroup) mainloop () |
|
G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Hilaire Fernandes, FDL LinuxFocus.org Buray� klikleyerek hatalar� rapor edebilir ya da yorumlar�n�z� Linuxfocus'a g�nderebilirsiniz |
�eviri bilgisi:
|
2001-01-29, generated by lfparser version 2.6