If you can't read please download the document
Upload
tomas-virseda
View
1.769
Download
2
Embed Size (px)
Citation preview
Taller PyGTK
Taller de aprendizaje
Toms Vrseda ([email protected])
LinuxEC
Taller PyGTK
plataforma de desarrollo
lenguaje de programacin
toolkit grfico
Taller PyGTK
GNOME, plataforma de desarrollo
Guas: prcticas comunes para escribir cdigo o disear interfaces
Referencias: contienen las API de las bibliotecas y los estndares que se usan en la plataforma GNOME
Herramientas de desarrollo: Constructores de interfaces grficos, un sistema de ayuda integrado, editores, herramientas de informe de errores, debuggers, sistema de documentacin, etc. ...
Tipos de particiones
Taller PyGTK
PYTHON, lenguaje de programacin
Caractersticas:
Software Libre
Maduro
+14 aos
diseo elegante y robusto
Fcil de aprender
se lee como pseudocdigo
sintaxis sencilla
Portable
Unix, Windows, Mac, ...
Propiedades:
Compila a bytecode interpretado
Multi-paradigma
Todo son objetos
Pero puede usarse de manera procedural
Mdulos, clases, funciones, generadores
Biblioteca estndar extensa
Manejo moderno de errores
Tipos de alto nivel
Interprete interactivo
Bases de datos
MySQL, PostgresSQL, MS SQL, Informix, DB/2, Sybase
Interfaces grficas
Qt, GTK, win32, wxWidgets, Cairo
Frameworks Web
Django, Turbogears, Zope, Plone, webpy
Tipos de particiones
Taller PyGTK
GTK, toolkit grfico
Estabilidad
+10 aos
Slida 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
Mvil
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
Orientacin a objetos
Internationalizacin
Localizacin
Accesibilidad
Soporte para texto bidireccional
Soporte UTF8
Documentacin
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 grfico
Widgets
Eventos y seales
Callbacks
Contenedores
Disposicin de los widgets
Conceptos:
Taller PyGTK
GTK, toolkit grfico
Widgets: componente grfico de una ventana
Taller PyGTK
GTK, toolkit grfico
Signalsmensajes emitidos por interaccin con los widgetstoggled, clicked, destroyed...
Signal handlers
espera hasta que llega unas seal especfica
y ejecuta una funcin en respuesta
Seales y eventos
Eventos
mensajes emitidos sin interaccin con los widgets
button_press_event, destroy_event, key_press_event, etc.
GTK, toolkit grfico
funcin ejecutada por el manejador de seales
en respuesta a una seal
Taller PyGTK
Callbacks
GTK, toolkit grfico
Un widget no se dispone en ningn orden. Se aadee a widgets especficos llamados contenedores
Taller PyGTK
Disposicin de los widgets
Un widget debe ser aadido a un contenedor que a su vez puede pertenecer a otro contenedor
Sistemas de archivos
Taller PyGTK
- hablar
+ cdigo
Un sistema de archivos son los mtodos y estructuras de datos que un sistema operativo utiliza para seguir la pista de los archivos de un disco o particin; es decir, es la manera en la que se organizan los archivos en el disco.
Sistemas de archivos
Taller PyGTK
Un ejemplo sencillo
#!/usr/bin/env python# -*- coding: utf-8 -*-# File: basico.py# Author: Toms Vrseda# License: GPL v3# Description: ejemplo uso de pygtk
# Gtk bindingsimport gtk # gtk bindings
# callback button1def boton_uno(widget, data=None): print "Hola, soy el botn uno"
# callback button2def boton_dos(widget, data=None): print "Hola, soy el botn dos"
# create widgetswindow = gtk.Window() # main windowbutton1 = gtk.Button('Botn 1') # First buttonbutton2 = gtk.Button('Botn 2') # Second buttoncontainer = gtk.HBox() # container
# conectar sealeswindow.connect('destroy', gtk.main_quit)button1.connect('clicked', boton_uno)button2.connect('clicked', boton_dos)
# pack buttonscontainer.pack_start(button1)container.pack_end(button2)
# add container to top level windowwindow.add(container)
# show all and run!window.show_all()gtk.main()
Un sistema de archivos son los mtodos y estructuras de datos que un sistema operativo utiliza para seguir la pista de los archivos de un disco o particin; es decir, es la manera en la que se organizan los archivos en el disco.
Sistemas de archivos
Taller PyGTK
AplicacinGestor de cumpleaos
Objetivos de aprendizaje
aspectos bsicos de python y gtk
cargar interfaz grfica
uso de widgets y seales
entrada/salida de datos
Sistemas de archivos
#!/usr/bin/env python
Taller PyGTK
obligatorio
Ruta del intrprete de python
Soporte UTF-8
Fichero cdigo fuente
Autor programa
Licencia
Descripcin
Comenzamos...
1. Crear y editar el fichero fuente miscumples.py:
# -*- coding: utf-8 -*-
# File: miscumples.py
# Author: Toms Vrseda
# License: GPL v3
# Description: gestin de cumpleaos
Documentacin
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 intrprete
# python bindings para la biblioteca GTK
# mdulo pygtk
# RDFlib
# mi mdulo 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 grfico
# inicializar estructuras de datos
# conectar seales 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 grfico
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 principaldef __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 seales
Seales: conectar seales 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, da, 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: botn pulsable. Emite la seal '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 seal
pass
Taller PyGTK
Muokkaa otsikon tekstimuotoa napsauttamalla
Muokkaa jsennyksen tekstimuotoa napsauttamalla
Toinen jsennystaso
Kolmas jsennystaso
Neljs jsennystaso
Viides jsennystaso
Kuudes jsennystaso
Seitsems jsennystaso
Kahdeksas jsennystaso
Yhdekss jsennystaso