Primeros pasos con PyGTK

En esta entrada voy a tratar de marcar un punto de inicio para el desarrollo de una pequeña aplicación con interfaz gráfica (GUI, por sus siglas en inglés) en lenguaje Python para escritorios Gnome (o aquellos que soporten las librerías de GTK+). Lo haré mediante el “binding” PyGTK porque es muy habitual que lo tengas ya instalado si usas Ubuntu. Otras características, información y tutoriales sobre PyGTK los puedes encontrar en su sitio web.

Primer paso, un poco de python…
Python es un lenguaje muy moderno y bastante bueno para quien quiera aprender a programar. Su sintaxis es muy simple, obliga a indentar correctamente el código y permite desarrollar programas de forma muy veloz. Incluso de forma temprana se le añadió soporte de orientación a objetos.
Aunque es un lenguaje interpretado (puedes invocar el intérprete con la orden “python” en el terminal), lo ideal será trabajar con un editor de texto sobre un fichero, e interpretar ese fichero en cada paso.
Estos ficheros contendrán el codigo y podemos ejecutarlos tal que así:
$ python programa
Por ejemplo, un programa muy simple sería el siguiente:
print "hola"
Tanto si introduces esto en un intérprete como si lo invocas como un programa en fichero, obtendrás lo que ya te imaginas: se imprime la palabra “hola” en pantalla.
Es poco práctico tener que invocar de cada vez al intérprete; así que vamos a aprovechar para añadir dos lineas al comienzo del fichero:
#!/usr/bin/env python
# -*- coding:utf-8 -*-

La primera indica al sistema donde se encuentra el intérprete de python; para que lo busque por su cuenta. La segunda es una linea que conviene agregar por precaución, para asegurarnos de que el programa trabaje con codificación de caracteres UTF-8.
Ahora, si haces que el programa sea ejecutable y lo cargas como cualquier otro…
$ chmod +x programa
$ ./programa

Voila! El programa se ejecuta por si solo.

Creamos una ventana vacía…
Vamos a definir un pequeño esqueleto “base” para nuestros desarrollos en PyGTK. No voy a usar la orientación a objetos para no complicarlo demasiado; pero existe buena documentación sobre cómo hacerlo. Voy a documentar el codigo practicamente al completo, para ahorrarnos explicaciones más adelante; y como se puede ver, los comentarios se insertan con el símbolo almohadilla. Si tienes una duda, por favor, deja un comentario y trataré de ayudarte.
#!/usr/bin/env python
# -*- coding:utf-8 -*-

# importamos el enlace a las librerias graficas
import pygtk
# queremos que sean las librerias 2.0 (o superiores)
pygtk.require ('2.0')
# ahora ya podemos importar las librerias graficas
import gtk

# creacion de la ventana
# definimos un objeto ventana que aparecerá sobre todas las demás
ventana = gtk.Window(gtk.WINDOW_TOPLEVEL)
# esto libera memoria cuando cerramos la GUI
ventana.connect("delete_event", lambda w,e: gtk.main_quit())
# le damos un nombre a nuestra ventana
ventana.set_title("Programa 1")
# y definimos su tamaño ancho x alto
ventana.set_default_size(250,100)

# Ahora que tenemos la ventaa, podríamos programar unos menus, cuadros de texto, etc.

# mostramos la ventana
# obligamos a todos los elementos que fuimos añadiendo a que se muestren (no hay ninguno aun)
ventana.show_all()

# echamos a andar la aplicacion
gtk.main()

De todo este código la linea más interesante es sin duda ésta:
ventana.connect("delete_event", lambda w,e: gtk.main_quit())
Como traté de sintetizar en el comentario, la misión de esta linea es importantísima. El programa carga en memoria todo lo que la interfaz puede necesitar. En nuestro caso solo una ventana; que como cualquier ventana “normal” de GTK+, dispone de un botón de cierre (cuya pulsación se denomina delete_event), uno de maximizar y otro de minimizar. No obstante, pulsar el botón de cierre destruirá la ventana en nuestra pantalla, pero no la descargará de la memoria de forma automática. Piensa en todos esos programas que al pulsar la X, se van a la bandeja del sistema (por ejemplo, un gestor de descargas). Por eso este comportamiento se puede personalizar, y en principio yo he conectado el evento de pulsar el botón de cierre a la función gtk.main_quit(), que cerrará la ventana pero también finalizará el programa y devolverá al sistema la memoria que estaba usando.

El resultado de la ejecución será este:

Por ahora nada espectacular, pero ya lo iremos desarrollando…

Anuncios

Un comentario sobre “Primeros pasos con PyGTK

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s