Tema 5 Diseño con Glade
Curso de Python Avanzado
Juan Pedro Bolı́var Puente
Instituto Andaluz de Astrofı́sica
Mayo de 2011
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 1 / 24
Índice
1 Introducción
2 Un paseo por Glade
3 Proyecto
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 2 / 24
Introducción
Índice
1 Introducción
2 Un paseo por Glade
3 Proyecto
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 3 / 24
Introducción
¡Yo también quiero botones!
O sea que...
Le damos botones a los usuarios...
¡Y nosotros no paramos de picar código!
¡Esto no es justo!
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 4 / 24
Introducción
... y usuarios
Solución:
¡Editores de interfaces gráficas!
Glade: editor de interfaces gráficas de GTK
Editamos la interfaz visualmente ...
La guardamos en un ficherito XML ...
Luego cargamos la interfaz ...
Conectamos las señales automáticamente ...
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 5 / 24
Introducción
El ficherito de Glade...
Un ficherito editador por Glade
<? xml version = " 1.0 " encoding = " UTF -8 " standalone = " no " ? >
<! DOCTYPE glade - interface SYSTEM " glade -2.0. dtd " >
<! -- Generated with glade3 3.4.0 on Tue Nov 20 14 :05:37 2
< glade - interface >
< widget class = " GtkWindow " id = " window1 " >
< property name = " events " > G D K _ P O I N T E R _ M O T I O N _ M A S K |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
G DK _B U TT O N _ R E L E A S E _ M A S K </ property >
< child >
< placeholder / >
</ child >
</ widget >
</ glade - interface >
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 6 / 24
Introducción
Ventajas
¡Todo son ventajas!
Podemos cambiar el diseño sin cambiar el código
Podemos centrarnos en el diseño
⇒ ¡Nuestros usuarios nos lo agradecerán!
Glade ayuda por defecto a seguir las
Gnome Human Interface Guidelines
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 7 / 24
Introducción
Ventajas
¡Todo son ventajas!
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 7 / 24
Introducción
Gnome Human Interface Guidelines
¡El diseño es importante!
Design for People
Don’t Limit Your User Base
Match Between Application → Real World
Make Your Application Consistent
Keep the User Informed
Keep It Simple and Pretty
Put the User in Control
Forgive the User
Provide Direct Manipulation
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 8 / 24
Introducción
Gnome Human Interface Guidelines
¡El diseño es importante!
Figura: Da recomendaciones estilı́sticas concretas
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 8 / 24
Introducción
Gnome Human Interface Guidelines
¡El diseño es importante!
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 8 / 24
Un paseo por Glade
Índice
1 Introducción
2 Un paseo por Glade
3 Proyecto
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 9 / 24
Un paseo por Glade
Nada más abrir Glade ...
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 10 / 24
Un paseo por Glade
Estructura del editor ...
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 11 / 24
Un paseo por Glade
Cargando la interfaz en el código
¿Cómo cargamos la interfaz en el código?
Antaño ...
Usábamos libglade
http://developer.gnome.org/libglade/stable/
Sigue siendo mantenida por GNOME
Ahora ...
¡GTK nos da todo lo necesario!
Nos ahorramos dependencias
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 12 / 24
Un paseo por Glade
Cargando la interfaz en el código ...
La clase gtk.Builder
add from file (fname) → Carga el fichero fname
connect signals (dic or obj) → Conecta los
manejadores con:
Métodos con ese nombre de un objeto
Funciones especificadas en un diccionario
get object (objname) → Devuelve el objeto con
nombre objname del fichero ...
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 13 / 24
Un paseo por Glade
Conectando señales con un botón ...
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 14 / 24
Un paseo por Glade
Nuestra primera aplicación ...
import gtk
import util
class TutorialApp ( object ):
def __init__ ( self , *a , ** k ):
super ( TutorialApp , self ). __init__ (..
b = gtk . Builder ()
b . add_from_file ( " tutorial . glade " )
b . connect_signals ( self )
self . window = b . get_object ( " window " )
self . window . show ()
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 15 / 24
Un paseo por Glade
Nuestra primera aplicación ...
def handle_clicked ( self , obj ):
util . show_message_dialog (
" Mmmmmmm .... " ,
" Que gustito ! " )
def handle_window_destroy ( self , obj ):
gtk . main_quit ()
if __name__ == " __main__ " :
app = TutorialApp ()
gtk . main ()
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 16 / 24
Un paseo por Glade
Vamos creando cajas y rellenando huecos
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 17 / 24
Un paseo por Glade
Vamos creando cajas y rellenando huecos
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 17 / 24
Un paseo por Glade
Vamos creando cajas y rellenando huecos
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 17 / 24
Un paseo por Glade
Vamos creando cajas y rellenando huecos
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 17 / 24
Un paseo por Glade
Vamos creando cajas y rellenando huecos
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 17 / 24
Un paseo por Glade
Las propiedades importantes del layout
En las cajas ...
homogeneous → Si es TRUE los huecos tendrán el
mismo espacio dedicado fijo
En los widgets de dentro ...
fill → Rellenar el hueco extra disponible
expand → Solicitar todo el espacio posible
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 18 / 24
Un paseo por Glade
También podemos editar menús ...
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 19 / 24
Proyecto
Índice
1 Introducción
2 Un paseo por Glade
3 Proyecto
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 20 / 24
Proyecto
Vamos a hacer algo más chulo...
Vamos a programar gfits
Aplicación para visualizar ficheros FITS
Que permita ver las imagines
Mezclar cubos como imágenes RGB
Ver las tablas que contiene
Dedicaremos el resto del tema a estudiar su
código e intentar mejorarlo ...
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 21 / 24
Proyecto
¡Ta dá!
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 22 / 24
Proyecto
Recursos adicionales
Gnome Human Interface Guidelines
The GNOME Team
http://developer.gnome.org/hig-book/
Glade Tutorial
Micah Carrick
http://www.micahcarrick.com/
gtk-glade-tutorial-part-1.html
Python code to convert FITS files to images
Min-Su Shin
http://www.astro.lsa.umich.edu/~msshin/
science/code/Python_fits_image/
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 23 / 24
Proyecto
¿Preguntas?
Muchas gracias por su atención.
Juan Pedro Bolı́var Puente (Instituto Andaluz de Astrofı́sica)
Tema 5 Diseño con Glade Mayo de 2011 24 / 24