Download - Creación de Aplicaciones gráficas sencillas
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
1/25
Creacin de Aplicaciones grficassencillas
Pablo Barrera [email protected]://gsyc.info/~barrera
Grupo de Usuarios de Linuxhttp://gul.uc3m.es
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
2/25
18 Noviembre 2004, Pablo Barrera Gonzlez
2
Por favor apaguen sus terminales de comunicacin
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
3/25
18 Noviembre 2004, Pablo Barrera Gonzlez
3
Aplicaciones grficas
Cada da son ms necesariasEs una parte muy importante del resultado final
Motivos frikis
...Pero nunca tienes tiempo para aprender
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
4/25
18 Noviembre 2004, Pablo Barrera Gonzlez
4
Situacin actual
Hay muchas posibilidadesGTK+
Qt
TK
WxWindows
Motif
Xforms
Xlib
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
5/25
18 Noviembre 2004, Pablo Barrera Gonzlez
5
Por qu PyGTK?
Es totalmente libreEs fcil de aprender
Lo que aprendes sirve en otros lenguajes
Mucha documentacin y tutorialesQueda bonito
Python es introspectivo
Python es de alto nivel
Puede usar libglade
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
6/25
18 Noviembre 2004, Pablo Barrera Gonzlez
6
Herramientas
Emacs (o lo que sea) Glade y libglade Python Devhelp (con libro de GTK+)
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
7/25
18 Noviembre 2004, Pablo Barrera Gonzlez
7
GTK+
Gimp ToolkitUsada por Gnome
Widget
Pseudo Orientada a objetos
Pensada para C
Muchos recubrimientos
C++
Python
Java
Mono
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
8/25
18 Noviembre 2004, Pablo Barrera Gonzlez
8
Gtk+
TemasGDK
Pango
Drag and Drop
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
9/25
18 Noviembre 2004, Pablo Barrera Gonzlez
9
Partes de Gtk+
WidgetSeales
Callbacks
Main_loop
callback
Boton1
Main Loop
on_boton1_clickedcallback
Boton2 on_boton2_clickedclicked
clicked
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
10/25
18 Noviembre 2004, Pablo Barrera Gonzlez
10
Widgets
JerarquaOrientados a Objetos
Ventana
Contenedores
Cualquier Widget
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
11/25
18 Noviembre 2004, Pablo Barrera Gonzlez
11
Glade
Entorno grficoVentanas, Widgets y Seales
Guarda la informacin en XML
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
12/25
18 Noviembre 2004, Pablo Barrera Gonzlez
12
Comenzado una interfaz
Colocar una o varias ventanasColocar sus contenedores y elementos
Cambiar los nombres
Ajustar las propiedades (margen, tamao,etc)
Aadir las seales y los manejadores
Aadir seal de destruccin
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
13/25
18 Noviembre 2004, Pablo Barrera Gonzlez
13
Tirando cdigo
Usamos mdulos: pygtk, gtk y gtk.glade
#!/usr/bin/python
import pygtk # for testing GTK version numberpygtk.require ('2.0')
import gtk
import gtk.glade
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
14/25
18 Noviembre 2004, Pablo Barrera Gonzlez
14
Permite cargar el XML creado por Glade
Permite conectar las seales a sus manejadores
Cambiando el archivo Glade, cambia la interfaz
self.xml = gtk.glade.XML('proyecto1.glade')
libGlade
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
15/25
18 Noviembre 2004, Pablo Barrera Gonzlez
15
Una clase para la interfaz grficaclass GUI:
def __init__(self, oc):
# Load glade file
self.xml = gtk.glade.XML('proyecto1.glade')
# Connect handlers of gui to this class
self.xml.signal_autoconnect(self)
# To access a widget -> self.xml.get_widget("name")
# More information: help(gtk.glade.XML)
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
16/25
18 Noviembre 2004, Pablo Barrera Gonzlez
16
ManejadoresMtodos para atender a las seales
Dos tipos:
1 parmetro de entrada (widget)
2 parmetros de entrada (widget, evento)
def on_window1_destroy(self, widget):
gtk.main_quit()
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
17/25
18 Noviembre 2004, Pablo Barrera Gonzlez
17
Cargamos el archivo Glade
Conectamos los manejadores
Comenzamos el bucle de GTK
Para salir: gtk.main_quit()
if __name__ == "__main__":
gui = GUI()gtk.main()
Arrancando la aplicacin
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
18/25
18 Noviembre 2004, Pablo Barrera Gonzlez
18
Acceder a un widgetUsando gtk.glade y el archivo xml
self.entryC = self.xml.get_widget("nombre")
Tomndolo de los argumentos de entrada de losmanejadores
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
19/25
18 Noviembre 2004, Pablo Barrera Gonzlez
19
TrucosUsar la ayuda de Python
La introspeccin con los widgets
Buscar ejemplos de GTK
Usar Devhelp o el API de GTK+
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
20/25
18 Noviembre 2004, Pablo Barrera Gonzlez20
Funcionamiento del buclegtk.main() atiende a la lista de eventos
gtk_main_iteration() ejecuta una nica iteracin
Todo en un nico hilo
El programa solo funciona en modo reactivo
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
21/25
18 Noviembre 2004, Pablo Barrera Gonzlez21
Funciones de tiempo ociosoCuando el gtk.main() tiene tiempo libre
gtk.idle_add(funcin)
Sigue siendo un nico hilo
Debe devolver el control suficientemente rpido
Mientras se ejecuta la funcin main_loop no atiende anuevas seales
Debe devolver gtk.True
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
22/25
18 Noviembre 2004, Pablo Barrera Gonzlez22
Hilos de ejecucinEn general es mejor usar funciones idle ytemporizadores
An as es posible usar hilos
import thread
gtk.threads_init()
thread.start_new_thread(gui.run, ())
gtk.threads_enter()
gtk.main()gtk.threads_leave()
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
23/25
18 Noviembre 2004, Pablo Barrera Gonzlez23
Otras funcionalidadesArchivos po
Teclas rpidas
Funciona en Microsoft Windows
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
24/25
18 Noviembre 2004, Pablo Barrera Gonzlez24
Referenciashttp://www.gtk.org/
http://www.pygtk.org/
http://glade.gnome.org/
http://primates.ximian.com/~sandino/python-glade/
http://gruppy.sicem.biz/componentes#gazpacho
-
8/6/2019 Creacin de Aplicaciones grficas sencillas
25/25
Preguntas?