Capítulo 1. Introducción

Tabla de contenidos

1.1. Exploración de PyGTK

PyGTK 2.0 es un conjunto de módulos que componen una interfaz Python para GTK+ 2.0. En el resto de este documento cuando se menciona PyGTK se trata de la versión 2.0 o posterior de PyGTK, y en el caso de GTK+, también a su versión 2.0 y siguientes. El sitio web de referencia sobre PyGTK es www.pygtk.org. El autor principal de PyGTK es:

que es ayudado por los desarrolladores citados en el archivo AUTHORS de la distribución PyGTK y por la comunidad PyGTK.

Python es un lenguaje de programación interpretado, ampliable y orientado a objetos que se distribuye con un amplio conjunto de módulos que permiten el acceso a un gran número de servicios del sistema operativo, servicios de internet (como HTML, XML, FTP, etc.), gráficos (incluidos OpenGL, TK, etc.), funciones de manejo de cadenas, servicios de correo (IMAP, SMTP, POP3, etc.), multimedia (audio, JPEG) y servicios de criptografía. Existen además multitud de módulos proporcionados por terceros que añaden otros servicios. Python se distribuye bajo términos similares a los de la licencia GPL y está disponible para los sistemas operativos Linux, Unix, Windows y Macintosh. En www.python.org hay más informacion disponible sobre Python. Su autor principal es:

GTK+ (GIMP Toolkit) es una librería que permite crear interfaces gráficas de usuario. Se distribuye bajo la licencia LGPL, por lo que posibilita el desarrollo de software abierto, software libre, e incluso software comercial no libre que use GTK sin necesidad de pagar licencias o derechos.

Se le conoce como el toolkit de GIMP porque originalmente se escribió para desarrollar el Programa de Manipulación de Imágenes de GNU GIMP, pero GTK+ se usa ya en numerosos proyectos de software, incluído el proyecto de escritorio GNOME (Entorno de Modelo de Objetos orientados a Red). GTK+ está diseñada sobre GDK (Kit de Dibujo de GIMP) que, básicamente, es una abstracción de las funciones de bajo nivel que acceden al sistema de ventanas (Xlib en el caso del sistema de ventanas X). Los principales autores de GTK+ son:

Actualmente GTK+ es mantenida por:

GTK+ es fundamentalmente un interfaz orientada a objetos para programadores de aplicaciones (API). Aunque está escrita completamente en C, está implementada usando la idea de clases y funciones de retrollamada (punteros a función).

Existe un tercer componente, llamado Glib, que contiene diversas funciones que reemplazan algunas llamadas estandard, así como funciones adicionales para manejar listas enlazadas, etc. Las funciones de reemplazo se usan para aumentar la portabilidad de GTK+ ya que algunas de las funciones que implementa no están disponibles o no son estándar en otros UNIX, tales como g_strerror(). Otras incluyen mejoras a las versiones de libc, tales como g_malloc, que posee capacidades de depuración mejoradas.

Desde su versión 2.0, GLib incluye el sistema de tipos que forma la base de la jerarquía de clases de GTK+, el sistema de señales usado en ésta, una API de hebras que abstrae las diferentes APIs nativas para programación multihilo en las diversas plataformas, y la capacidad de cargar módulos.

Como último componente, GTK+ usa la librería Pango para la salida de texto internacionalizado.

Este tutorial describe la interfaz de Python con GTK+ y está basado en el tutorial de GTK+ 2.0 escrito por Tony Gale e Ian Main. En él se intenta documentar en la medida posible todo PyGTK, pero en ningún caso es completo.

Este tutorial presupone algún conocimiento previo de Python, así de cómo se crean y ejecutan programas escritos en Python. Si no se está familiarizado con Python, es recomendable previamente la lectura del Tutorial de Python. Este tutorial no presupone ningún conocimiento previo sobre GTK+ y si se utiliza PyGTK para aprender GTK+ sería interesante recibir comentarios acerca de este tutorial, y qué aspectos resultan problemáticos. Este tutorial no describe cómo compilar o instalar Python, GTK+ o PyGTK.

Este tutorial está basado en:

Los ejemplos se escribieron y probaron en una RedHat 9.0.

Este documento está "en obras". Por favor, consúltese www.pygtk.org para localizar las actualizaciones.

Me gustaría mucho escuchar los problemas que aparezcan al aprender PyGTK a partir de este documento, y se aprecian los comentarios sobre cómo mejorarlo. Por favor, mira la sección Cómo Contribuir para más información. Si encuentra fallos, por favor rellene un informe de fallo en bugzilla.gnome.org en el proyecto pygtk. Para ello, la información que se encuentra en www.pygtk.org sobre Bugzilla puede resultar de gran utilidad.

El manual de referencia de PyGTK 2.0 se encuentra disponible en http://www.pygtk.org/pygtkreference. Dicho manual describe detalladamente las clases de PyGTK y, por ahora, sólo se encuentra disponible en inglés.

La página web de PyGTK (www.pygtk.org) contiene otros recursos útiles para aprender PyGTK, incluido un enlace a la extensa FAQ (Lista de Preguntas Frecuentes, también en inglés únicamente), y otros artículos y cursos, así como una lista de correo activa y un canal IRC (consúltese www.pygtk.org para los detalles).

1.1. Exploración de PyGTK

Johan Dahlin escribió un pequeño programa en Python (pygtkconsole.py) que se ejecuta en Linux y permite la exploración interactiva de PyGTK. Ese progama proporciona una interfaz de intérprete interactivo al estilo de la de Python, que se comunica con un proceso hijo que ejecuta los comandos introducidos. Los módulos PyGTK se cargan por defecto al arrancar el programa. Un ejemplo simple de sesión es:

  moe: 96:1095$ pygtkconsole.py
  Python 2.2.2, PyGTK 1.99.14 (Gtk+ 2.0.6)
  Interactive console to manipulate GTK+ widgets.
  >>> w=Window()
  >>> b=Button('Hola')
  >>> w.add(b)
  >>> def hola(b):
  ...     print "¡Hola Mundo!"
  ... 
  >>> b.connect('clicked', hola)
  5
  >>> w.show_all()
  >>> ¡Hola Mundo!
  ¡Hola Mundo!
  ¡Hola Mundo!
  
  >>> b.set_label("Hola a todos")
  >>> 

En este ejemplo se crea una ventana que contiene un botón que imprime un mensaje ('¡Hola Mundo!') cuando se hace clic en él. El programa permite probar así fácilmente los diversos controles de GTK+ y sus interfaces PyGTK.

También es útil el programa desarrollado por Brian McErlean para la receta de Activestate 65109 junto con algunas modificaciones para que funcione con PyGTK 2.X. En este curso lo llamamos gpython.py y funciona de forma parecida al programa pygtkconsole.py.

Nota

Estos dos programas no funcionan en Microsoft Windows porque necesitan funciones específicas de Unix.