4.3. Descripción de bibliotecas

4.3.1. Bibliotecas GTK+ y GLADE

A continuación, se describen brevemente las funciones gráficas utilizadas para la creación de la interfaz mediante el módulo gtk ofrecido por Python. Este módulo es conocido por PyGTK.

Antes de empezar a describir las funciones básicas, comentar que para la creación de la interfaz gráfica se ha utilizado un creador de interfaces llamado Glade. Éste programa nos permite diseñar la interfaz de un modo intuitivo y rápido, ofreciendo la posibilidad de traducirlo a diferentes lenguajes. Si bien es verdad que en la versión utilizada de Glade, no traduce a Python, se pueden encontrar sin dificultad en Internet traductores. Glade crea un fichero en XML que facilita la traducción a cualquier lenguaje y nos vuelve a demostrar el gran número de aplicaciones que tiene este lenguaje de etiquetado.

GTK+ es una biblioteca basada en componentes y en contenedores; la ubicación de un componente se realiza siempre dentro de un contenedor, que podrá alojar a este o a más componentes.

Para empezar, creamos una ventana, eligiendo entre los tres tipos disponibles. Esta función nos devolverá un objeto al que una vez creado podremos personalizar y añadir componentes.

Objeto_ventana=GtkWindow(WINDOW_TOPLEVEL)

Una vez creada la ventana, podremos crear por ejemplo una tabla para tener todos los componentes ordenados. Uno de los principales componentes es el botón:

Objeto_boton=GtkButton("etiqueta del botón")

Una vez creado el botón, podrá ser añadido al contenedor deseado. Destacar de éste último objeto la función que conectará un evento recibido con un procedimiento:

Objeto_boton.connect("clicked", procedimiento , parámetros,....)

Si lo que deseamos es destruir un objeto GTK, debemos usar la siguiente función, que romperá todas las referencias a otros objetos.

objeto.destroy()

El resto de las funciones ofrecidas por PyGtk son de similar manejo. Como ya se comentó, la interfaz gráfica se realizó mediante Glade, pero debido a unos fallos en el traductor a Python, se tuvo que retocar gran parte del código ofrecido por éste.

4.3.2. Aplicaciones de la librería DOM

A continuación, son mostrados los paquetes de la librería DOM que nos resuelven de manera sencilla y rápida el análisis, lectura y creación de un mensaje XML.

El paquete utilizado se invoca de la la siguiente manera:
from xml.dom import minidom
Una vez, importado el módulo, cargar y validar un documento XML en memoria es tan complicado como:
xmldoc = minidom.parse('fichero.xml')
Ahora, para obtener el nodo marcado por la etiqueta deseada realizamos lo siguiente:
reflist= xmldoc.getElementsByTagName('etiqueta')

Obtenemos pues una lista de objetos correspondiente a los elementos XML que tienen esa etiqueta; para verla en formato string bastaría con aplicarle la función 'toxml()' a un elemento de la lista.

Ya hemos visto lo básico para analizar y desmenuzar un mensaje XML. Para la construcción de los mensajes XML lanzados contra la matriz, se ha utilizado otro fichero XML conteniendo por así decirlo la gramática del mensaje (para mas información ver siguiente apartado).

Una vez mas, volvemos a utilizar una función antes mencionada para la creación de un mensaje:
xmldoc = minidom.parse(objeto_fichero).documentElement

Esta función es prácticamente igual a la utilizada anteriormente, con la única excepción que no carga en memoria la primera línea de todo documento XML:

<?xml version="1.0"?>

Lo que ahora conseguimos, es cargar en memoria nuestro mensaje fuente de XML, con lo que obtendremos todos los posibles mensajes que se puedan generar. Tan sólo hay que elegir el tipo de mensaje y sustituir los campos apropiados.