Vamos a hacer un pequeño programa con PyGTK 3.0 que también funciona
para PyGTK 3.4. Esta pequeña GUI les enseñara como dividir un programa
en dos a mas archivos.
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()
def on_open_clicked(self, button):
print "\"Open\" button was clicked"
Es una función que se activa en el terminal cuando hacemos clic en el botón open. La señal para activarla es:
self.button.connect("clicked", self.on_open_clicked)
def on_close_clicked(self, button):
print "Closing application"
Gtk.main_quit()
es una función que se activa cuando hacemos clix en el boton cerrar .
cierra el programa que ejecutamos .
la señal para activarla es
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 ###
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.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 ####
Colocamos nuestro programa en una carpeta llamada simple en nuestro caso en el escritorio
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
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()
Colocamos los tres archivo en una misma carpeta en nuestro caso , la carpeta se llama simple dividido .
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
from 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 ####
Pueden observar que la sentencia
def on_open_clicked(self, button):
print "\"Open\" button was clicked"
no esta en gui.py, se encuentra en el archivo io.py
La sentencia
def on_close_clicked(self, button):
print “Closing application”
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.
Por ultimo disculpen los usuarios de KDE por no realizar un mini tutorial para KDE .