Taller PyGTK
Upcoming SlideShare
Loading in...5
×
 

Taller PyGTK

on

  • 2,345 views

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

Statistics

Views

Total Views
2,345
Views on SlideShare
2,331
Embed Views
14

Actions

Likes
3
Downloads
47
Comments
1

2 Embeds 14

http://www.slideshare.net 9
http://www.vazaar-project.org 5

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Hola Alexander,

    prueba a ver si puedes descargarla ahora. Si no puedes, mandame un correo a kaskaras _at_ gmail _dot_ com y te la envío.

    Gracias por tu interés,
    Tomás
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Taller PyGTK Taller PyGTK Presentation Transcript

  • Taller PyGTK
    • Taller de aprendizaje
    • Tomás Vírseda ( [email_address] )
    • LinuxEC
  • Taller PyGTK plataforma de desarrollo lenguaje de programación toolkit gráfico
  • 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. ...
  • 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
  • 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, ...
  • Taller PyGTK GTK , toolkit gráfico
      • Widgets
      • Eventos y señales
      • Callbacks
      • Contenedores
      • Disposición de los widgets
    Conceptos:
  • Taller PyGTK GTK , toolkit gráfico Widgets: componente gráfico de una ventana
  • 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.
  • GTK , toolkit gráfico
    • función ejecutada por el manejador de señales
      • en respuesta a una señal
    Taller PyGTK Callbacks
  • 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
  • Sistemas de archivos Taller PyGTK - hablar + código
  • 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()
  • 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
  • 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 !
  • 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
  • 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()
  • 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")
  • 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
  • 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
      • )
  • 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
  • Taller PyGTK