Ustedes pueden visitar el tutorial de Sebastian Pölsterl sobre el nuevo PyGTK 3, aquí esta el nuevo tutorial, les dejo el link :
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Este es el blog de Sebastian .
http://k-d-w.org/node/88
Una critica a este tutorial de Sebastian es que no enseña a dividir un programa en partes o en varios archivos, hubiera sido bueno que mostrara un ejemplo de como hacerlo con PyGTK 3.
Todos los programas grandes y complejos se dividen en muchos archivos e incluso los archivos se colocan en otros directorios, es decir se ubican en diferentes carpetas.
Comencemos con el pequeño ejemplo:
Aquí les dejo el código del escrito en un solo archivo llamado gui.py. Abrimos el editor de texto Gedit o el editor que mas usemos, copiamos el codigo de abajo y lo guardamos como gui.py
from gi.repository import Gtk class gui(): def on_open_clicked(self, button): print "\"Open\" button was clicked" def on_close_clicked(self, button): print "Closing application" Gtk.main_quit() def __init__(self): self.window = Gtk.Window() self.window.connect('delete-event', Gtk.main_quit) self.box = Gtk.Box() self.window.add(self.box) self.button = Gtk.Button(label='Open') self.button.connect("clicked", self.on_open_clicked) self.box.pack_start(self.button, True, True, 0) self.button = Gtk.Button(label='Cerrar') self.button.connect("clicked", self.on_close_clicked) self.box.pack_start(self.button, True, True, 0) self.window.show_all() Gtk.main() if __name__ == '__main__': gui = gui()
Es una función que se activa en el terminal cuando hacemos clic en el botón open. La señal para activarla es:def on_open_clicked(self, button): print "\"Open\" button was clicked"
es una función que se activa cuando hacemos clix en el boton cerrar .self.button.connect("clicked", self.on_open_clicked) def on_close_clicked(self, button): print "Closing application" Gtk.main_quit()
cierra el programa que ejecutamos .
la señal para activarla es
Declaración de Widgets: un widgets es un programa predeterminado por las librerías de interfaz gráfica que usamos. Por ejemplo un widgets es un botón, una ventana, una caja, etc. Estos son los widgets que declaramos en nuestra programa .self.button.connect("clicked", self.on_close_clicked) from gi.repository import Gtk ### invocamos a las librerías de PyGTK ### class gui(): ### definición de clase llamada gui es la clase principal ###
Colocamos nuestro programa en una carpeta llamada simple en nuestro caso en el escritorioself.window = Gtk.Window() ### ventana ### self.box = Gtk.Box() ### caja #### self.button = Gtk.Button(label='Open') #### boton open #### self.button = Gtk.Button(label='Cerrar') #### boton cerrar #### self.window.add(self.box) #### la caja esta contenida en la ventana llamada window #### self.box.pack_start(self.button, True, True, 0) ##### el boton esta contenido en la caja llamada box ### self.window.show_all() ### mostramos toda la ventana ### gui = gui() ### creo un objeto gui ####
Abrimos la carpeta con el terminal , en mi caso uso Nemo de Linux Mint 14 .
Para compilar colocamos en el terminal python gui.py
ver la imagen .
Ahora podemos ver nuestro pequeño programa o widget nuevo creado con las librerias PyGTK 3
Se trata de una simple ventana con dos botones .
Ahora dividimos el programa en tres partes a continuación les dejo el código de los tres archivos .
Primer archivo gui.py
Colocamos los tres archivo en una misma carpeta en nuestro caso , la carpeta se llama simple dividido .from gi.repository import Gtk from destroy import destroy from io import io class gui(destroy ,io ): def __init__(self): self.window = Gtk.Window() self.window.connect('delete-event', Gtk.main_quit) self.box = Gtk.Box() self.window.add(self.box) self.button = Gtk.Button(label='Open') self.button.connect("clicked", self.on_open_clicked) self.box.pack_start(self.button, True, True, 0) self.button = Gtk.Button(label='Cerrar') self.button.connect("clicked", self.on_close_clicked) self.box.pack_start(self.button, True, True, 0) self.window.show_all() Gtk.main() if __name__ == '__main__': gui = gui()Segundo archivo io.py
class io: def on_open_clicked(self, button): print "\"Open\" button was clicked"Tercer archivo destroy.py
from gi.repository import Gtk class destroy: def on_close_clicked(self, button): print "Closing application" Gtk.main_quit()
Para compilar los tres archivos . Abrimos la carpeta con el terminal y simplemente colocamos de nuevo en el terminal
python gui.py
Modificaciones realizadas al codigo gui.py
Pueden observar que la sentenciafrom destroy import destroy ### sentencia para importar nuestro archivo destroy.py ### from io import io ### sentencia para importar nuestro archivo io.py ### class gui(destroy ,io ): #### ala clase principal le añadimos las subclases destroy e io ####
no esta en gui.py, se encuentra en el archivo io.pydef on_open_clicked(self, button): print "\"Open\" button was clicked"
La sentencia
print “Closing application”def on_close_clicked(self, button):
Gtk.main_quit()se encuentra en el archivo destroy.py
Así podemos dividir un programa en muchos archivos ubicados en diferentes directorios a la vez.
Por otra parte Python es un pilar del software libre, y esta adaptado para funcionar con GTK 3.6 /3.8 su denominación es PyGTK. La adaptación de Python para KDE se denomina PyQT.
Python esta adaptado para Mac OS y WINDOWS .
Espero que les haya sido útil este mini tutorial de PyGTK3. Pueden hacer todas las criticas constructivas que quieran.
También se algo de Gtk 3.4 /3.6 y Vala GTK 3.4/3.6.