Python y WxPython

64
Python y wxPython, ¡hoy hará Sol! Ángel Luis García García

description

Presentación breve de Python y wxPython en la Murcia Lan Party 2010.

Transcript of Python y WxPython

Page 1: Python y WxPython

Python y wxPython, ¡hoy hará Sol!

Ángel Luis García García

Page 2: Python y WxPython

Un murciano que sabe algo de Python...● ¿Quién soy? Ángel Luis● UMU: Ing. Técnico Inf. Gestión● Trabajo: 2004-2010

– AngelPlus (VB 6.0)– AMC (PB 6.5)– Andamur (PB 6.5)– MARNYS (Python 2.5.4, Crystal)– Academia P. de Lema (Ofimática)– Proyectos personales (VB/PB/Python)...

(algunos sin cobrar...)● Programación (no web), bases de datos, mantenimiento

de sistemas (servidores, datáfonos, PC's), formación

Page 3: Python y WxPython

SEPTIEMBRE 2009 ...una revelación,

Python me encontró...

Y desde entonces... hasta hoy

El Viaje del Navegante(http://elviajedelnavegante.blogspot.com/)

(ReportLab, XML, wxPython, IronPython, MySQL, etc)

Page 4: Python y WxPython

¿Por qué Python es bueno para mí?● Sintaxis sencilla.● Fácil de aprender.● Multiplataforma (Unix,

Mac, Windows).● Multiparadigma

(imperativo, funcional, OO) [se pueden mezclar entre ellos]

● Amplia documentación

● Multitud de módulos (web, móviles, escritorio, SOAP, etc).

● Ampliable mediante C y C++.

● Respaldado por Google, Facebook, NASA, etc.

● Tengo el Síndrome de la Cadena “chorizo”

Page 5: Python y WxPython

Cadenas chorizo...

Page 6: Python y WxPython
Page 7: Python y WxPython

Python: Historia

● Creado por Guido van Rossum (el benevolente dictador vitalicio) a finales de los 80.http://www.python.org/~guido/http://www.python.org/~guido/

– Desde 2005, en Google (Mountain View).Desde 2005, en Google (Mountain View).– Fija directrices y decisiones finales sobre Fija directrices y decisiones finales sobre

Python.Python.● Administrado por Administrado por PSFPSF (Python Software (Python Software

Foundation), con licencia de código abierto (Foundation), con licencia de código abierto (PSFLPSFL) ) compatible con compatible con GPLGPL de de GNUGNU a partir de versión a partir de versión 2.1.1.2.1.1.

● Sitio web oficial:Sitio web oficial: www.python.orgwww.python.org

Page 8: Python y WxPython
Page 9: Python y WxPython

Implementaciones de Python

● CPython: (o Python) Implementación de referencia. Compila, interpreta y contiene módulos codificados en C estándar.

● Jython: Implementación para la JVM (Máquina Virtual Java) accediendo a las bibliotecas de Java.

● IronPython: Implementación para el CRL de Microsoft, para acceder al framework de .NET.

● PyPy: Implementación de Python escrita en Python (para rizar más el rizo).

Page 10: Python y WxPython

Python.... ¿versión 2.XX ó 3.XX?

● Ayuda para elegir entre 2.XX y 3.XX:http://wiki.python.org/moin/Python2orPython3

● Tres versiones a Diciembre 2010:– Python 2.6 (estable)– Python 2.7 (estable)– Python 3.2 (desarrollo)

● ¿Cuál elegir? Depende de nuestras exigencias. – ¿Qué modulos necesitamos? Mayoría compatibles con 2.6– ¿Futuro? 2.XX es incompatible con 3.XX – Mayoría de frameworks funcionan con 2.XX (Django, PIL, etc)

Page 11: Python y WxPython

Mi recomendación de versión Python

Page 12: Python y WxPython

El futuro de Python● Artículo: http://blog.apsl.net/2010/07/29/va-a-desaparecer-python/● Lenguaje de propósito general, con más de 20 años de vida.● Esponsorizado el desarrollo por Google.● Utilizado en Industrial Light & Magic, Pixar, BitTorrent, U.S.

National Weather Service, NASA, NSA, Fermi, Corel, Red Hat, Lockheed Martin, Facebook, etc.

● Conferencias anuales mundiales (PyCon).● Multitud de módulos (librerías), ampliable.● Utilizado en programación de sistemas, cálculo numérico, web,

móviles (Android, Symbian), máquinas virtuales Java y .NET, etc.● Casos de éxito: Google App Engine (entorno de Cloud Computing de Google,

que soporta Java y Python). Más en http://www.python.org/about/success/

Page 13: Python y WxPython

Comenzamos....

Page 14: Python y WxPython

Python: Conceptos generales● Lenguaje de programación de uso general.● De muy alto nivel ó VHLL (Very high-level programming language)

– Alto nivel de abstracción (uso de listas, tuplas, diccionarios ó tablas hashing).

● Multiplataforma (Linux, Mac, Windows)● Multiparadigma (imperativo, orientado a objetos y funcional)● Interpretado, dinámico, fuertemente tipado, gestión de memoria

● Python: Lenguaje + biblioteca estándar + módulos de extensión

– Lenguaje: Estructuras, palabras reservadas, funciones genéricas, etc. Ej: print, if... else..., def ():.

– Biblioteca estándar: Conjunto de módulos por defecto en la distribución. Ej: os, cPickle, datetime.

– Módulos de extensión: componentes extra. Ej: acceso a bases de datos, XML, YAML, entorno gráfico, web.

Page 15: Python y WxPython

Instalación de Python● De serie en la mayoría de distros Linux● Para Windows y Mac, www.python.org

● Se instala:

– Intérprete Python (intérprete + compilador cuando sea necesario)

– IDLE: IDE escrito en Tkinter– Documentación módulos instalados– Manual Python

Page 16: Python y WxPython

El intérprete de Python

Page 17: Python y WxPython
Page 18: Python y WxPython

Mini tutorial: funciones y clases

Page 19: Python y WxPython

Mini tutorial: funciones y clases

Page 20: Python y WxPython

Mini tutorial: Control de flujo

Page 21: Python y WxPython

Mini tutorial: Tipos de datos● Números● Secuencias

– Mutables● Listas

– Inmutables● Tuplas● Cadenas

● Diccionarios● Conjuntos

Page 22: Python y WxPython

LISTAS: ¡¡¡Todo potencia!!!● Instanciación:

– a = []– a = ['Odio el Hola Mundo',OBJECT]– a = ['Ángel Luis','García','García',32,[18,5,1978]]

● Acceso:– a[0] devuelve 'Ángel Luis'– a[3] devuelve 32– a[4][1] devuelve 5– for i in a: i....

● Métodos: len(x), count(x), index(x), append(x), remove(x), etc.

Page 23: Python y WxPython

TUPLAS: Listas inmutables

● Instanciación:– a = ()– a = ('Hola Lan Party', 2010)– a = (OBJECT, [], (243,343))

● Acceso:– a[2] devuelve tupla (243, 343)

● Métodos: count(x), index(x)

Page 24: Python y WxPython

DICCIONARIOS: Tablas hashing● Instanciación:

– a = {}– a = {'clave1':valorX, 'clave2':valorY}– a = {'angel':32, 'emilia':32, 200:'Python' }

● LAS CLAVES SON UNÍVOCAS ● Acceso:

– a['angel'] devuelve 32– a[200] devuelve 'Python'– Mediante iteradores...

● Métodos: len(x), has_key(k), del(d['x']), etc.

Page 25: Python y WxPython

Conversiones entre listas, tuplas y diccionarios● Sea:

– l = ['Lan Party', 2010]– t = ('Odio el Hola Mundo', 'Desde siempre')– u = [(1, 'Python'),(2,'wxPython')]– d = {1:'XML', 2:'IronPython', 3:'ReportLab'}

● Conversiones:

– c1 = tuple(l) c1 = ('Lan Party', 2010)– c2 = list(t) c2 = ['Odio el Hola Mundo', 'Desde siempre']– c3 = dict(u) c3 = {1: 'Python', 2: 'wxPython'}– c4 = d.items() c4 = [(1, 'XML'), (2, 'IronPython'), (3, 'ReportLab')]– c5 = d.keys() c5 = [1, 2, 3]– c6 = d.values() c6 = ['XML', 'IronPython', 'ReportLab']

Page 26: Python y WxPython

Más de funciones... parámetros

Page 27: Python y WxPython

Más de OO... herencia

Page 28: Python y WxPython

Más cosas importantes de OO y funciones... que veremos otro día...● OO

– Herencia múltiple y MRO– Emular polimorfismo (sobrecarga de métodos).– Métodos especiales (__dict__, __all__, etc)– Metaclases

● Funciones– Paso de parámetros: listas y diccionarios.– Atributos de función.– Lambda, yield, etc.

Page 29: Python y WxPython

Más cosas importantes... que veremos otro día....● Iteradores.● Expresiones regulares (módulo re).● Comprensión de listas.● Funciones decoradoras.● Entrada/salida (file y los módulos os, codecs).● Interacción con el sistema (módulos sys, os).● Manejador de excepciones (try/except/finally).● Codificación (sitecustomize, utf-8, decode/encode)● Formateo cadenas (%s, %d, etc)

Page 30: Python y WxPython

Ejemplo: Imports, persistencia y otras hierbas, en Python● Aplicación sencilla de registro de persona (cargar,

guardar, modificar). ● Creación de módulos, ¡¡¡cada cosa en su sitio!!!

– clases_base.py: Entidades.– persistencia.py: Persistencia de datos.– clases_aplicacion.py: Lógica de negocio adaptada.– principal.py: Aplicación.

Page 31: Python y WxPython
Page 32: Python y WxPython
Page 33: Python y WxPython
Page 34: Python y WxPython

Ficheros generadosAl “compilar” principal.py

Ficheros compilados pyc

Page 35: Python y WxPython

Ejecutando...

Page 36: Python y WxPython
Page 37: Python y WxPython

from modulo import *

Page 38: Python y WxPython

Segunda parte....

Are you ready?

Page 39: Python y WxPython
Page 40: Python y WxPython

El framework wxPython● Creado por Robin Dunn, en 1995.● Es una librería gráfica para Python.● Permite crear programas con una interfaz gráfica robusta y de

gran funcionalidad, fácil y simple.● Es un wrapper de la plataforma wxWidgets (escrita en C++).

(Una adaptación de la biblioteca wxWidgets para ser usada en Python)

● Es Open Source.● Multiplataforma (Windows, Unix, Mac).● Muy documentado.● Proyecto muy activo. (19/10/2010 wxPython 2.9.1.1)

● www.wxpython.org (software y documentación)

The only reason wxPython isn't the standard Python GUI toolkit is that Tkinter was there first.

Guido van Rossum

Page 41: Python y WxPython

El framework wxPython

● Versiones a Diciembre 2010 (para Python 2.5, 2.6 y 2.7):– Estable: 2.8.11.0 – Desarrollo: 2.9.1.1

● Conocimientos previos para utilizar wxPython:– Sintáxis y estucturas fundamentales de Python.– Programación orientada a objetos.

● ¿Por qué? Se utilizan clases, se heredan componentes y se hace override en sus métodos y atributos.

Page 42: Python y WxPython

¿Cómo funciona una aplicación wxPython?● wxPython sirve para crear aplicaciones gráficas

orientadas a eventos.● A cada evento se le puede asociar un código,

mediante un proceso llamado binding.● El manejador de eventos es el código que se

dispara a consecuencia de la generación de un evento.

● Una aplicación wxPython espera a que se generen eventos, asociando los mismos a un código, llamado manejador de eventos.

Page 43: Python y WxPython

Estructura de una aplicación wxPython● Una aplicación wxPython se divide en tres partes:

– Importar el módulo wx (y demás cosas...)– Creación de la aplicación wxPython.– Creación del contenedor.

● Componentes.● Binding.● Manejadores de eventos.

Page 44: Python y WxPython

Creación de una aplicación wxPython

Page 45: Python y WxPython

Creación de una aplicación wxPython

Page 46: Python y WxPython

Binding y manejadores de eventos

Page 47: Python y WxPython

Binding y manejadores de eventos

Y al hacer click en el botón

Page 48: Python y WxPython

¿Dónde está la documentación de wxPython? ¿Frame? ¿ein?

Page 49: Python y WxPython

Documentación obligatoria

● wxPython Demo

● WxWidgets Reference

● Google

Page 50: Python y WxPython

Sizers● Los widgets pueden disponerse con wx.Point y wx.Size,

mediante coordenadas.● Sizer: Mecanismo de disposición de widgets en wxPython.

– Maneja el tamaño y posición de sus widgets, basado en un conjunto de reglas.

– Se asigna a un contenedor (wx.Panel ó wx.Frame).– Es un algoritmo para disponer ó enmarcar un grupo de

widgets.– Los subwidgets que se crean dentro de un contenedor

deben de añadirse por separado al sizer.– El sizer administra la posición de los widgets.

Page 51: Python y WxPython

Sizers● Un sizer en wxPython es un objeto con el único

propósito de administrar el posicionamiento de un conjunto de widgets dentro de un contenedor.

● El sizer es la representación de un algoritmo de posicionamiento de pantalla (no un contenedor ó widget).

● Un sizer es una instancia de la clase wx.Sizer.● Un sizer puede estar incluido en otro sizer.

Page 52: Python y WxPython

Sizers

● Tipos de sizers:– wx.BoxSizer– wx.FlexGridSizer– wx.GridSizer– wx.GridBagSizer– wx.StaticBoxSizer

● Los más importantes: – wx.BoxSizer y wx.FlexGridSizer

Page 53: Python y WxPython

Sizers● Aprender a utilizar sizers manualmente es:

– UNA LOCURA● ¿Alguna solución?

– Utilizar aplicaciones de diseño de pantallas con generación automática de código Python y wxPython.

●wxGlade●wxFormBuilder●wxDesigner

Page 54: Python y WxPython

wxFormBuilder

● Entorno WYSIWYG para diseño gráfico de interfaces para wxWidgets.

● Posibilidad de generar código Python.● Contiene muchos widgets. ● Trabajar con sizers en wxFormBuilder es muy fácil.● http://wxformbuilder.org/● Tutorial: wxFormBuilder en El Viaje del Navegante

Page 55: Python y WxPython

Cosas que veremos otro día...

● Widgets más comunes.● Menús.● Widgets avanzados.● MVC en wxPython.● Imágenes.● Impresión.● Los controles Grid y Tree.● ....y un largo etcétera.

Page 56: Python y WxPython

Ejemplos completos de wxPython

● Interfaz gráfica de gestión de usuarios.

● Editor de texto.

● Combobox y paso de parámetros entre widgets.

● pyLorca, creación automática de clases.

Page 57: Python y WxPython

Anexo I: IDE's, editores y GUI's para Python

Page 58: Python y WxPython

IDE con GUI integrado: BOA Constructor, SharpDevelop

IDE: IDLE, NetBeans, Stani's Python Editor, PyScripter, Geany,

Pyragua,Wingware Python IDE, PythonWin

GUI: wxGlade, wxFormBuilder

Editor: Editra, Notepad++, Jedit, Gedit, BlueFish, SciTE

Shell interactivo: Dreampie

Más herramientas aquí.

Page 59: Python y WxPython

Anexo II: Recursos documentales en la red

Page 60: Python y WxPython

http://pyspanishdoc.sourceforge.net/http://python.org.ar/pyar/http://www.freetechbooks.com/python-f6.htmlhttp://www.digilife.be/quickreferences/quickrefs.htmhttp://rgruet.free.fr/http://planet.python.org/http://pypi.python.org/pypi?:action=indexhttp://python.alltop.com/http://ironpython-urls.blogspot.com/http://www.cheat-sheets.org/http://www.portablepython.com/http://diveintopython3.org/table-of-contents.htmlhttp://www.gaudisite.nl/PythonLinks.htmlhttp://code.activestate.com/recipes/langs/python/http://revista.python.org.ar/http://www.ferg.org/http://effbot.org/tkinterbook/http://wiki.python.org/moin/SpanishLanguagehttp://www.java2s.com/http://xoomer.virgilio.it/infinity77/index.htmlhttp://www.andypatterns.com/

Page 61: Python y WxPython

Anexo III: Libros de Python, en español

Page 62: Python y WxPython

● PYTHON GUÍA DE REFERENCIA– ALEX MARTELLI– EDITORIAL O'REILLY

● PROGRAMACIÓN PYTHON 3– MARK SUMMERFIELD– EDITORIAL ADDISON WESLEY

● PYTHON, CREAR – MODIFICAR – REUTILIZAR– JIM KNOWLTON– EDITORIAL WROX

● LA GUÍA DEFINITIVA DE DJANGO– ADRIAN HOLOVATY Y JACOB KAPLAN-MOSS– EDITORIAL APRESS

Page 63: Python y WxPython

El secreto para aprender Python y wxPython...

Buscar, encontrar, modificar, probar y

ver porqué no funciona.

Page 64: Python y WxPython

¡Muchas gracias a todos!