En esta manera de crear nuestro ejemplo usaremos Glade, el cuál crea un archvo XML(con extensión archivo.glade) donde guardará los nombres, atributos, señales, etc. de cada widget.

Haciendo uso de la biblioteca libglade, construirá la interfaz desde el XML en el tiempo de ejecución, y conectará de manera automática las llamadas de las señales(las funciones).

Ejemplo, creando la interfaz

Lanzamos glade-3(glade-2 también es muy funcional). En la ventana principal crearemos un nuevo proyecto de gtk.

Insersión de widgets

Glade cuenta con un paleta de widgets que son los controles de gtk que usaremos para la creación del GUI.

De todos los controles de la paleta daremos clic en el widget ventana(gtk.Window) que se encuentra en Toplevels.

Veremos que en la ventana principal de glade se añadio el control ventana sin contenido en ella.

Si seleccionamos el widget ventana podremos modificar sus propiedades en la ventana de propiedades de glade.

Esta contiene todas las propietades y atributos de cada widget, desde esta modificaremos dichos atributos a nuestras necesidades.

Procederemos a insertar los contenedores de widgets, en nuestro ejemplo una caja vertical(gtk.VBox) con 3 filas(clic en el control y clic dentro de la ventana).
Quedaría de la siguiente manera:

Continuaremos insertando un gtk.Label en la primer fila, un gtk.Entry en la segunda y por último un gtk.Button(clic en el widget a insertar y clic en la fila de la caja donde queremos colocar el widget).

Por último conectaremos las señales que emiten los eventos de cada widget. Esto en la ventana de propiedades, en la pestaña de "Señales".

Seleccionamos la ventana, buscamos la señal "destroy" y seleccionamos su manejador gtk_main_quit(ya sabemos para qué).

De igual manera con el entry; señales->activate->"on_button1_clicked"(si no existe pues escribela).

Y por último el Botón; señales->clicked->"on_button1_clicked"(puedes poner manejadores personalizados, solo ojo en al momento de codificar en python).

Basta con guardar el archivo con extensión .glade en el mismo directorio donde vayamos a crear el archivo de python.

Archivos:

El archivo de python:

    
import gtk
# Este módulo nos sirve para poder llamar al archivo de glade.
import gtk.glade

class Gui:

    def __init__(self):
        # Le decimos a nuestro programa que archivo XML de glade usar.
	self.widgets = gtk.glade.XML("CanonicoGladeApp.glade")
        # Creamos un diccionario con los manejadores definidos en glade y su respectiva llamada.
        signals = {
		   "on_button1_clicked" : self.on_button1_clicked,
		   "on_entry1_activate" : self.on_button1_clicked,
                   "on_main_destroy" : gtk.main_quit
}
        # Autoconectamos las señales.
        self.widgets.signal_autoconnect(signals)
        
        # Del archivo glade obtenemos los widgets label1 y entry1.
        # Hay otra manera de hacerlo usando métodos especiales como __getitem__.
        self.label1 = self.widgets.get_widget("label1")
        self.entry1 = self.widgets.get_widget("entry1")        
        
        def on_button1_clicked(self, widget):
            text = self.entry1.get_text()
            self.label1.set_text(text)

# Finalmente instanciamos nuestra clase.
if __name__ == "__main__":
    Gui()        
    gtk.main()

Y ejecutamos:

$ python CanonicoGladeApp.py

Nota: Tanto el archivo .py como el .glade deben estar en el mismo directorio.



Anterior Inicio Siguiente