Jen bych rad dodal ze efektivity se da dosahnout pouzivanim a programu GLADE. viz http://glade.gnome.org/
Napsat GUI v GTK neni nemozne ale urcite to neni nejjednodusi.. Skvelou veci pak je pouzit pro vytvoreni grafickeho rozhrani GLADE a jeho xml vystup pak jednoduse zpracovat v pythonu pomoci jednoducheho wrapperu.
pak mate vsechy objekty GUI prekne schovany v jednom obektu(slovnik) a muzete k nim lehce pristupovat.. pro obsluhu jednotlivych signalu si vytvorite tridu a obslouzeni vsech kliknuti, zmacknuti a prejeti pak uz neni zadnej problem..
Vytvoreni jednoduche aplikace je pak otazka minut. Odpada tak zdlouhave tvoreni gui rucne primo v kodu aplikace.
Vse asi lepe nez ja ilustruje a nasledujici priklad a adresa..
PS: podobnej priklad naleznete napriklad v tutorialu k PyGTK (kterej zrovna nemohu nalezt..)
//omlouvamn se jeste za sprznene odsazeni..
class GladeHandlers:
def on_window1_delete_event(self, event):
# On window delete event, we want to die.
gtk.mainquit()
def on_window1_destroy_event(self, event):
gtk.mainquit()
class WidgetsWrapper:
def __init__(self):
self.widgets = libglade.GladeXML(os.path.join(os.getcwd(), "wavShow.glade"))
self.widgets.signal_autoconnect(GladeHandlers.__dict__)
def __getitem__(self, key):
return self.widgets.get_widget(key)
widgets = WidgetsWrapper()
pristup k jednotlivejm entitam guje je velice jednoduchej..
drawingArea = widgets['drawingarea1']
tenhle priklad naleznete treba na http://pig.slug.org.au/talks/pygtk/project1.py, dalsim vybornym zdrojem je dokumentace PyGTK.
Pokud jsem se nekde dopustil nejake nepresnosti v terminech, preklepu ap.. tak se omlouvam..