Top Banner

of 25

Creación de Aplicaciones gráficas sencillas

Apr 07, 2018

Download

Documents

Aprender Libre
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 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?