You are on page 1of 43

Introduccin al desarrollo de interfaces de Grficas de Usuario con PyGTK y Glade

por: Ing. Julian Rivera Pineda email: xtecuan@gmail.com site: http://xtecuan.org blogs: http://xtecuan.livejournal.com http://jroller.com/xtecuan/

Contenidos de la presentacin

Que es GTK? Que es Glade? Que es Python? Que es PyGTK Ejemplos de Aplicaciones PyGTK Uso de Glade

Uso de PyGTK Aplicacin Hola Mundo Aplicacin calculo de formula cuadrtica

Que es GTK?

GTK+ es un toolkit (coleccin de herramientas) multiplataforma para creacin de interfaces grficas de usuario. Ofrece un completo set de widgets, GTK+ es adecuado para proyectos que van desde proyectos pequeos hasta suites de aplicaciones complejas. http://www.gtk.org/

Que es Glade ?

Glade es un constructor libre de interfaces grficas de usuario para GTK+ y GNOME, liberado bajo licencia GNU GPL. Las interfaces de usuario en Glade son almacenadas como XML, y empleando la librera libglade estas pueden ser cargadas por aplicaciones dinamicamente bajo peticin.

Que es Glade ?

Usando libglade, los archivos XML generados por Glade Builder pueden ser usados en numerosos lenguajes de programacin incluyendo: C, C++, Java, Perl, Python, C#, Pike, Ruby, Haskell, Objetive Caml y Scheme. Adicionar soporte para otros lenguajes se puede realizar fcilmente http://glade.gnome.org/

Que es Python ?

Python es un lenguaje de programacin interpretado, interactivo y orientado a objetos. Es a menudo comparado con Tcl,Perl, Scheme o Java La implementacin de Python es portable: Corre en los diferentes sabores de UNIX, en Windows, OS/2, Mac, Amiga and muchas otras plataformas. Si tu sistema operativo no esta listado aqui, tenemos la posibilidad de soportar Python, se puede ingresar al grupo de news:comp.lang.python, o se puede intentar compilar Python usando un compilador C.

Que es Python ?

Python combina con notable poder sintaxis muy clara. Tiene mdulos, clases, excepciones, tipos de datos dinmicos de alto nivel, y tipeo dinmico. Dentro del lenguaje existen muchas llamadas al sistema y librerias, tambien son soportados varios sistemas de ventanas (toolkits). Pueden ser adicionados nuevos modulos facilmente empleando C/C++. Python es tambien usable como un lenguaje para programar extensiones para aplicaciones que necesitan una API.

Que es Python ?

La implementacion de Python es portable: se puede ejecutar en multiples marcas de UNIX, en Windows, OS/2, Mac, Amiga, y muchas otras plataformas. http://www.python.org/doc/Summary.html

Que es PyGTK?

PyGTK provee un ambiente conveniente Wrapper (Clases Envoltorios) para la librera GTK para uso en programas Python, esta API toma el control de detalles complicados como el manejo de memoria y la conversion de tipos de datos. Cuando se combina con PyOrbit y gnome-python, puede ser usado para escribir Aplicaciones Gnome de mltiples caractersticas y completas http://www.pygtk.org/

Ejemplos de Aplicaciones PyGTK

Uso de Glade

Project Window Widget Tree Properties Window

Window current App Component Palete

Uso de Glade

El uso de Glade se limita a la creacin de un nuevo proyecto, luego adicionar una nueva ventana o Dialog. Creacin del Layout (Diseo) de la aplicacin empleando Horizontal Box, Vertical Box, Table Box, Fixed Positions, Horizontal Buttons Box, Vertical Buttons Box, Horizontal Panes y Vertical Panes. Adicionar Componentes Agregar Seales para programacin.

Uso de PyGTK

Desde PyGTK (Programacion Python) se hace el parsing (Decodificador XML ) del archivo de interfaz de usuario generado en Glade, para que sea accesible desde la aplicacin. Se programa en Python el modelo de datos de la aplicacin (Es una clase en Python para almacenar los datos que provienen de la interfaz de usuario). Se crea un diccionario de seales que se generan en la interfaz grfica relacionndolos con mtodos del programa en Python. Se despliega el resultado actualizando la interfaz grfica con los datos de salida o simplemente actualizando el modelo de datos.

Aplicacin Hola Mundo

Listado de pasos Glade: 1. Creacin del proyecto Glade. 2. Adicionar Ventana desde la paleta de componentes, ponerle un titulo y un nombre para el componente. 3.Creacin del Layout o diseo de la ventana empleando Vertical Box y Horizontal Box. 4.Adicionar Componentes Usar un Label (Escribirle un texto y marcarlo para que pueda usar HTML), un Text Entry (ponerle nombre) y dos Button (Ponerles nombres y enlazarlos con seales) 5.Crear una ventana Dialog para Mostrar el resultado de la aplicacin (ponerle nombre y enlazarla con seales)

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Aplicacin Hola Mundo

Listado de pasos PyGTK (Python usando Bluefish): 1. Abrir Bluefish u otro editor de texto como gedit o Kate. 2. Crear un archivo llamado HolaMundoPyGTK.py en el mismo directorio del Proyecto Glade del mismo nombre. 3. Escribir en la primera linea el interprete de Python a usar 4. Escribir informacin relativa al Autor, Version, Fecha, Copyright y Licencia dentro del script. 5. Importar las libreras de PyGTK a usar (paquete pygtk) y la librera de Glade (paquete gtk.glade), as como tambin las libreras relativas a GTK (paquete gtk) 6. Escribir una clase para el modelo de Datos de la aplicacin (MiModelo) 7. Escribir una clase para la GUI de la aplicacin y una para el Dialog 8. Escribir los mtodos de Negocio adecuados segn el caso. 9. Ver codigo en las laminas siguientes.

Aplicacin Hola Mundo Cdigo Python


#!/usr/bin/env python #HolaMundoPyGTK.py Script en Python y PyGTK para Hola Mundo __author__ = "Julian Rivera Pineda <xtecuan@gmail.com>" __version__ = "0.0.1" __date__ = "Date: 2008/09/20" __copyright__ = "Copyright (c) 2008 Julian Rivera Pineda" __license__ = "GPL" import sys try: import pygtk pygtk.require("2.0") except: pass try: import gtk import gtk.glade except: sys.exit(1)

Aplicacin Hola Mundo Cdigo Python


#Modelo de Datos de la aplicacion class MiModelo: """Aqui es donde guardamos el nombre de la persona a saludar""" #Constructor def __init__(self,nombreCompletoParam=""): self.nombreCompleto=nombreCompletoParam def __str__(self): return "<b>Hola Su Nombre Completo es: "+self.nombreCompleto+"!!!!</b>"

Aplicacin Hola Mundo Cdigo Python


#Ventana de Dialogo class DialogSaludo: def __init__(self,modelo): self.modelo = modelo #Aqui escribo el nombre del archivo glade self.gladefile = "holamundopygtk.glade" def run(self): #Cargando el dialogo desde el archivo glade self.wTree = gtk.glade.XML(self.gladefile, "dialogSaludo") #El Dialogo ya en variable de instancia py self.dlg = self.wTree.get_widget("dialogSaludo") self.entryNombre = self.wTree.get_widget("labelSalida") self.entryNombre.set_markup(self.modelo.__str__()) #Ejecutar el Dialogo de respuesta self.result = self.dlg.run() #Para destruir el dialogo self.dlg.destroy() #retornar el resultado return self.result

Aplicacin Hola Mundo Cdigo Python


#Ventana Principal class HolaMundoPyGTK: """Aqui es donde extraemos la informacion de la persona la GUI""" #Constructor def __init__(self): #Aqui escribo el nombre del archivo glade self.gladefile = "holamundopygtk.glade" #Aqui parseamos el archivo generado en glade self.wTree = gtk.glade.XML(self.gladefile,"windowHolaMundo") #Aqui creamos nuestro diccionario de senales contra metodos a ejecutar dic = {"on_buttonCancelar": gtk.main_quit,"on_buttonSaludar":self.saludar} #Aqui enlazamos el dicionario de senales con la GUI self.wTree.signal_autoconnect(dic) def saludar(self,widget): self.entryNombre = self.wTree.get_widget("entryNombre") self.modelo = MiModelo(self.entryNombre.get_text()) saludoDlg = DialogSaludo(self.modelo) result = saludoDlg.run()

Aplicacin Hola Mundo Cdigo Python


if __name__ == "__main__": hola = HolaMundoPyGTK() gtk.main()

Preguntas!!!

Contacto: Ing. Julian Rivera Pineda email: xtecuan@gmail.com site: http://xtecuan.org blogs: http://xtecuan.livejournal.com http://jroller.com/xtecuan/

You might also like