Your SlideShare is downloading. ×
Taller PyGTK
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Taller PyGTK

1,492
views

Published on

Taller introducción a la programación gráfica en GNOME con python y GTK

Taller introducción a la programación gráfica en GNOME con python y GTK

Published in: Technology

1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,492
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
50
Comments
1
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

    • 1. Taller PyGTK
      • Taller de aprendizaje
      • Tomás Vírseda ( [email_address] )
      • LinuxEC
    • 2. Taller PyGTK plataforma de desarrollo lenguaje de programación toolkit gráfico
    • 3. Taller PyGTK GNOME , plataforma de desarrollo Guías : prácticas comunes para escribir código o diseñar interfaces Referencias : contienen las API de las bibliotecas y los estándares que se usan en la plataforma GNOME Herramientas de desarrollo : Constructores de interfaces gráficos, un sistema de ayuda integrado, editores, herramientas de informe de errores, debuggers, sistema de documentación, etc. ...
    • 4. Tipos de particiones Taller PyGTK PYTHON , lenguaje de programación Características :
        • Software Libre
        • Maduro
            • +14 años
            • diseño elegante y robusto
        • Fácil de aprender
            • se lee como pseudocódigo
            • sintaxis sencilla
        • Portable
            • Unix, Windows, Mac, ...
      Propiedades :
        • Compila a bytecode interpretado
        • Multi-paradigma
            • Todo son objetos
            • Pero puede usarse de manera procedural
        • Módulos, clases, funciones, generadores
        • Biblioteca estándar extensa
        • Manejo moderno de errores
        • Tipos de alto nivel
        • Interprete interactivo
        • Bases de datos
            • MySQL, PostgresSQL, MS SQL, Informix, DB/2, Sybase
        • Interfaces gráficas
            • Qt, GTK, win32, wxWidgets, Cairo
        • Frameworks Web
            • Django, Turbogears, Zope, Plone, webpy
    • 5. Tipos de particiones Taller PyGTK GTK , toolkit gráfico
      • Estabilidad
          • +10 años
          • Sólida comunidad de usuarios
      • Multiplataforma
          • GNU/Linux, Mac, Windows, ...
      • Bindings
          • C++, C#, Java, Python , Perl, R, Lua, Guile, Ruby, PHP, Ada, Ocaml, Haskell, S-Lang, D
      • Móvil
          • Nokia 770 / N800 / N810
          • One Laptop Per Child Project
          • OpenMoko
      • Interfaces
          • Gran variedad de widgets
      • Accommodating
          • Look and feel nativo
          • Soporte para themes
          • Thread seguros
          • Orientación a objetos
          • Internationalización
          • Localización
          • Accesibilidad
          • Soporte para texto bidireccional
          • Soporte UTF8
          • Documentación
      • Foundations
          • Sistemas de objetos y tipos, bucle principal, plugins, threads, timers, manejo de memoria,
          • listas, tablas hash, arrays, árboles, manejo de cadenas, XML parser, Base64, ...
    • 6. Taller PyGTK GTK , toolkit gráfico
        • Widgets
        • Eventos y señales
        • Callbacks
        • Contenedores
        • Disposición de los widgets
      Conceptos:
    • 7. Taller PyGTK GTK , toolkit gráfico Widgets: componente gráfico de una ventana
    • 8. Taller PyGTK GTK , toolkit gráfico Signals mensajes emitidos por interacción con los widgets toggled , clicked , destroyed...
        • Signal handlers
        • espera hasta que llega unas señal específica
        • y ejecuta una función en respuesta
      Señales y eventos
      • Eventos
        • mensajes emitidos sin interacción con los widgets
        • button_press_event, destroy_event, key_press_event, etc.
    • 9. GTK , toolkit gráfico
      • función ejecutada por el manejador de señales
        • en respuesta a una señal
      Taller PyGTK Callbacks
    • 10. GTK , toolkit gráfico Un widget no se dispone en ningún orden. Se añadee a widgets específicos llamados contenedores Taller PyGTK Disposición de los widgets
        • Un widget debe ser añadido a un contenedor que a su vez puede pertenecer a otro contenedor
    • 11. Sistemas de archivos Taller PyGTK - hablar + código
    • 12. Sistemas de archivos Taller PyGTK Un ejemplo sencillo #!/usr/bin/env python # -*- coding: utf-8 -*- # File: basico.py # Author: Tomás Vírseda # License: GPL v3 # Description: ejemplo uso de pygtk # Gtk bindings import gtk # gtk bindings # callback button1 def boton_uno(widget, data=None): print "Hola, soy el botón uno" # callback button2 def boton_dos(widget, data=None): print "Hola, soy el botón dos" # create widgets window = gtk.Window() # main window button1 = gtk.Button('Botón 1') # First button button2 = gtk.Button('Botón 2') # Second button container = gtk.HBox() # container # conectar señales window.connect('destroy', gtk.main_quit) button1.connect('clicked', boton_uno) button2.connect('clicked', boton_dos) # pack buttons container.pack_start(button1) container.pack_end(button2) # add container to top level window window.add(container) # show all and run! window.show_all() gtk.main()
    • 13. Sistemas de archivos Taller PyGTK Aplicación Gestor de cumpleaños
      • Objetivos de aprendizaje
        • aspectos básicos de python y gtk
        • cargar interfaz gráfica
        • uso de widgets y señales
        • entrada/salida de datos
    • 14. Sistemas de archivos
        • #!/usr/bin/env python
      Taller PyGTK Ruta del intérprete de python Soporte UTF-8 Fichero código fuente Autor programa Licencia Descripción Comenzamos ... 1. Crear y editar el fichero fuente miscumples.py:
        • # -*- coding: utf-8 -*-
        • # File: miscumples.py
        • # Author: Tomás Vírseda
        • # License: GPL v3
        • # Description: gestión de cumpleaños
      Documentación ¡ documentando !
    • 15. Sistemas de archivos
        • import os
      Taller PyGTK imports
        • import sys
        • import gtk
        • import pygtk
        • import rdflib
        • import utils
        • # llamadas al Sistema Operativo
        • # objectos relacionados con el intérprete
        • # python bindings para la biblioteca GTK
        • # módulo pygtk
        • # RDFlib
        • # mi módulo de utilidades
        • # python imports
        • # bindings imports
        • # 3d-parties imports
        • # tus imports
    • 16. Sistemas de archivos Taller PyGTK Esqueleto del programa
        • class Programa:
        • def __init__(self):
        • # inicializar entorno gráfico
        • # inicializar estructuras de datos
        • # conectar señales a callbacks
        • def callback_add/del_cumple(self, data):
        • # get/set data from/to widgets
        • def callback_load/save_data(self, data):
        • # input/output data
        • def other_methods(self):
        • pass
        • # entry point
        • if __name__ == '__main__':
        • Programa()
    • 17. Sistemas de archivos Taller PyGTK Cargar el interfaz gráfico
        • class Widgets:
        • ”””
        • Clase de ayuda para cargar los widgets del fichero glade
        • ”””
        • def __init__(self,file):
        • # load glade file
        • self.widgets = gtk.glade.XML(file)
        • def __getitem__(self,key):
        • # diccionario de widgets
        • return self.widgets.get_widget(key)
      class MisCumples: ””” Clase principal ””” def __init__(self): self.gui = Widgets(os.path.join('./', "miscumples.glade")) # asignar widgets a variables self.window = self.gui.widgets.get_widget("winMain") ... self.mnusalir = self.gui.widgets.get_widget("mnuSalir")
    • 18. Sistemas de archivos Taller PyGTK Conectar señales
        • Señales: conectar señales a los widgets
        • connections = {
        • 'winMain/delete_event' : self.stop,
        • 'btnAdd/clicked' : self.add_cumple,
        • 'btnDel/clicked' : self.del_cumple,
        • 'btnHelp/clicked' : self.stop,
        • 'mnuSalir/activate' : self.stop
        • }
        • #connect signals
        • for wid_con, func in connections.iteritems():
        • wid, con = wid_con.split('/')
        • try:
        • self.gui[wid]. connect(con,func)
        • except Exception, e:
        • print "Error connecting signals: %s" % e
    • 19. Sistemas de archivos Taller PyGTK Widgets
        • Treeview : muestra el contenido en forma de árbol. Consta de:
        • - widget: tres columnas (mes, día, nombre)
        • # TreeStore
        • self.cumples = self.gui.widgets.get_widget("trvCumples")
        • # column month
        • column_month = gtk.TreeViewColumn ('mes')
        • self.cumples.append_column(column_month)
        • cell_month = gtk.CellRendererText ()
        • column_month.pack_start(cell_month, True)
        • column_month.add_attribute (cell_month, 'text', 0)
        • self.cumples.set_search_column(0)
        • - modelo de datos:
        • # treeview model
        • self.model = gtk.TreeStore (
        • gobject.TYPE_STRING, # month
        • gobject.TYPE_STRING, # day
        • gobject.TYPE_STRING, # name
        • )
    • 20. Sistemas de archivos Taller PyGTK Widgets
        • gtk.Calendar : muestra un calendario navegable
        • self.calendar = self.gui.widgets.get_widget("calBirthdays") # Calendar
        • month, day, name = self.calendar. get_date ()
        • gtk.Entry : entrada de datos
        • self.name = self.gui.widgets.get_widget("etyName") # Name entry
        • name = self.name. get_text ()
        • gtk.Button : botón pulsable. Emite la señal ' clicked '
        • self.btnadd = self.gui.widgets.get_widget("btnAdd") # Add button
        • 'btnAdd/clicked' : self.add_cumple,
        • def add_cumple(self, data=None): # callback para la señal
        • pass
    • 21. Taller PyGTK

    ×