sabato 19 maggio 2007

pyGtk - come ti creo un loop al posto del main

Questo codice dimostra l'utilizzo di un oggetto senza
la chiamata classica gtk.main()


import gtk
from time import sleep

#-----------------------------------------------------------------------------
class MyL01:
#-----------------------------------------------------------------------------
def __init__(self):
# Window
# istanziamo la finestra principale
self.win = gtk.Window(gtk.WINDOW_TOPLEVEL)
# associamo i segnali della finestra alle callback
self.win.connect('delete-event',self.on_win_delete)
self.win.connect('destroy', self.exit)
# Button
# istanziamo un bottone
self.but = gtk.Button("myL01")
# lo rendiamo visibile
self.but.show()
# associamo i segnali del bottone alle callback
self.but.connect("clicked", self.on_but_clicked, None)
self.but.connect_object("clicked", gtk.Widget.destroy, self.win)
# Packing
# inseriamo il bottone nella finestra
self.win.add(self.but)
# rendiamo visibile
self.win.show()
# Main
# abilito il loop
self.stop = False
# entro nel loop
self.loop()

def exit(self, arg):
" esco dal loop "
self.stop = True

def loop(self):
" loop principale "
# visualizzo il nome del modulo
print "entro in L01:\n sono stato chiamato col nome:", __name__
# in esecuzione con False
while not self.stop:
# se ci sono pendenze
while gtk.events_pending():
# le eseguo
gtk.main_iteration()
# ritardo del loop
sleep(0.01)
print "esco da L01"
#-------------------------------------------------------------------------
# callback
#-------------------------------------------------------------------------
def on_win_delete(self, widget, event):
print " richiesta di chiusura della finestra "
# Il valore False indica di propagare il segnale
# che andra' a generare una richiesta di distruzione
return False
# Il valore True indica di bloccare il segnale
#return True

def on_but_clicked(self, widget, data=None):
print " il bottone e' stato premuto "
#self.exit(self)

if __name__ == "__main__":
# istamzio l'oggetto
myl01 = MyL01()
# notare l'assenza di richiamo del loop delle gtk
# gtk.main()

lunedì 14 maggio 2007

Ciao mondo questo e' il mio blog.
Lo usero' per postare degli esempi di codice python
per averli sottomano onLine.

a presto Loris 8-)