Glade 3 Y Python

por | 27 noviembre, 2008

Hola, veamos la forma de crear a partir de un fichero con extensión .glade creado con Glade 3 el archivo en formato .xml para poderlo conectar con nuestro código en Python.

Bien, lo primero que haremos es abrir Glade 3 y crearnos una interfaz gráfica para nuestro programa,por ejemplo una ventana vacía. Antes de cerrar Glade3 acordaros de en el objeto ventana que hemos creado establecer la Propiedad de Visible a “Yes”. Supongamos que lo hemos guardado con el nombre tutorial.glade. Claro con esto no hacemos nada para programar en Python, para solucionarlo vamos a convertir dicho fichero de tipo glade a formato XML. Abrimos terminal y escribimos:

  1. gtk-builder-convert tutorial.glade tutorial.xml

Ya lo tenemos en formato XML, y con éste ya vamos a poder trabajar bajo Python. Seguidamente creamos un fichero en código Python para poder comunicarnos con el fichero tutorial.xml, y así poder ser capaces de ejecutar el programa y que nos aparezca la ventana. Yo le he llamado al fichero tutorial.py, lo podéis crear con el editor que os de la gana: Geany, Netbeans, Gedit, Kate, Anjuta, IDLE, etc, etc. Os pongo el código junto con la explicación de lo que hace:

  1. #!/usr/bin/python
  2.  
  3. #Importamos la librería pygtk
  4. import pygtk
  5. #Especificamos la versión de pygtk a usar, normalmente la 2.0
  6. pygtk.require("2.0")
  7. #Importamos la librería gtk
  8. import gtk
  9.  
  10. class TutorialApp(object):
  11.   def __init__(self):
  12.       #Cargamos el constructor de gtk y lo llamamos builder
  13.       builder = gtk.Builder()
  14.       #Cargamos con builder nuestro fichero de glade3 convertido a
  15.       #formato XML
  16.       #En nuestro caso al fichero le hemos llamado tutorial.xml
  17.       builder.add_from_file("tutorial.xml")
  18.       #Conectamos la señal de cerrar ventana
  19.       builder.connect_signals({ "on_ventana_destroy" : gtk.main_quit })
  20.       #Obtenemos el objeto ventana, en mi caso a
  21.       #al objeto ventana en Glade3 le he llamado ventana
  22.       self.window = builder.get_object("ventana")
  23.       #Mostramos la ventana por pantalla
  24.       self.window.show()
  25.  
  26. if __name__ == "__main__":
  27.   #A la clase que he definido como TutorialApp le asigno el nombre app
  28.   app = TutorialApp()
  29.   #De app sobre window le especifico que me lo muestre
  30.   app.window.show()
  31.   #Cargamos gtk, esta orden es imprescindible
  32.   gtk.main()

La ventaja de hacerlo así es que podemos editar nuestras interfaces gráficas de nuestros programas de forma gráfica e intuitiva con Glade3, sin tener que programarlo todo a pelo.
En Glade3 se optó por no generar el código directamente para poderlo convertir a XML, que es más portable, y por ejemplo podemos usar el mismo fichero xml para programar, por ejemplo, en C/C++. Lo malo es que a los desarrolladores de Glade3 se les ha “olvidado” crear una opción con un simple botón para que nos convierta el fichero en formato glade a formato xml, y así evitarnos el tener que hacerlo nosotros a mano por la terminal
En el siguiente artículo podréis aprender más sobre dicho tema, con otro ejemplo más elaborado, y enfocado también a C/C++, el artículo está dividido en 3 partes, y aunque esta escrito en inglés es fácilmente entendible.

Saludos :-h

6 pensamientos en “Glade 3 Y Python

  1. Juan

    Haber

    Glade genera un xml con una estructura particular y a ese archivo lo llama .glade. PERO SIGUE SIENDO UN XML

    GTKBUILDER usa otra estructura de xml y decicieron mantener la misma extencion.

    Existe una libreria que se llama libglade para manejar los xml generados directamente por glade (los .glade)

    Sencillamente a los chicos de glade le gusta mas su solucion que la de gtkbuilder… no es que se les olvido… el mayor problema es que gtk builder is bien es una estructura mas moderna anda bastante peor

  2. Oscar Vázquez

    La pregunta es simple: puedo hacer un entorno grafico para un programa en fortran?
    Saludos y muy buen blog

  3. Cristobal

    Óscar no lo he hecho nunca, en parte porque Fortran no lo veo desde mis años de Universidad, creo que se puede con wxWidgets,
    http://www.wxwidgets.org/
    De hecho el programa wxMaxima es un GUI de Maxima, con código en Fortran y que utilizan wxWidgets.
    Aunque no se cómo lo hacen, en wxWidgets tienen un foro en el que podrías preguntarlo. Saludos

Los comentarios están cerrados.