GladeWrapper, o cómo hacer una aplicación GTK con Python en 7 líneas
Esta receta explica cómo usar la clase GladeWrapper para hacer programas PyGTK + glade del modo más sencillo jamás visto.
Introducción
La clase GladeWrapper que propongo aquí es una forma de simplificar la carga y acceso de widgets GTK con glade. No es la única ni la primera pero creo que es lo suficientemente potente a la vez que sencilla comparada con otras implementaciones similares.
Ingredientes
- python-gtk2
- glade-3
- Conocimientos básicos de Python
La clase GladeWrapper
Se trata de una clase abstracta, es decir, no está pensada para ser instanciada sino para heredar de ella. La clase en cuestión es ésta:
Al sobreescribir el método __getattr__()
se puede referenciar un widget como si fuera un atributo del objeto que implemente esta clase. A pesar de eso, dispone de un método get_widget()
por si fuera necesario acceder a un widget del que se tiene su nombre como cadena, aunque eso no es lo habitual.
También notar que para acceder a un widget hay que poner “wg_” antes del nombre que le hayas dado en el .glade, Eso simplifica las cosas porque, de otro modo, al escribir mal el nombre de un atributo del objeto, el gladewrapper “pensaría” que te refieres a un widget; además es habitual usar atributos que se llaman igual que los widgets con los que tienen relación.
Ejemplo de uso
Para entender realmente la utilidad de esta clase lo más fácil es ver un ejemplo. El siguiente programa necesita el fichero gui.glade (creado con “glade”) para poder funcionar. Claramente la aplicación es totalmente trivial, es un típico “holamundo” que imprime un texto en una etiqueta al pulsar el botón.
Si alguien sabe cómo hacerlo más fácil que lo diga, por favor; a mí no se me ocurre…