Está en la página 1de 64

Python y wxPython, hoy har Sol!

ngel Luis Garca Garca

Un murciano que sabe algo de Python...

Quin soy? ngel Luis UMU: Ing. Tcnico Inf. Gestin 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 (Ofimtica) Proyectos personales (VB/PB/Python)... (algunos sin cobrar...)

Programacin (no web), bases de datos, mantenimiento de sistemas (servidores, datfonos, PC's), formacin

SEPTIEMBRE 2009 ...una revelacin, Python me encontr...


Y desde entonces... hasta hoy

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


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

Por qu Python es bueno para m?


Sintaxis sencilla. Fcil de aprender. Multiplataforma (Unix, Mac, Windows). Multiparadigma (imperativo, funcional, OO) [se pueden mezclar entre ellos] Amplia documentacin

Multitud de mdulos
(web, mviles, escritorio, SOAP, etc).

Ampliable mediante C y C++. Respaldado por Google, Facebook, NASA, etc. Tengo el Sndrome de la Cadena chorizo

Cadenas chorizo...

Python: Historia

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

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

Administrado por PSF (Python Software Foundation), con licencia de cdigo abierto (PSFL) compatible con GPL de GNU a partir de versin 2.1.1. Sitio web oficial: www.python.org

Implementaciones de Python

CPython: (o Python) Implementacin de referencia. Compila,


interpreta y contiene mdulos codificados en C estndar.

Jython: Implementacin para la JVM (Mquina Virtual Java)


accediendo a las bibliotecas de Java.

IronPython: Implementacin para el CRL de Microsoft, para


acceder al framework de .NET.

PyPy: Implementacin de Python escrita en Python (para rizar


ms el rizo).

Python.... versin 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) Qu modulos necesitamos? Mayora compatibles con 2.6 Futuro? 2.XX es incompatible con 3.XX Mayora de frameworks funcionan con 2.XX (Django, PIL, etc)

Cul elegir? Depende de nuestras exigencias.


Mi recomendacin de versin Python

El futuro de Python

Artculo: http://blog.apsl.net/2010/07/29/va-a-desaparecer-python/ Lenguaje de propsito general, con ms de 20 aos 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 mdulos (libreras), ampliable. Utilizado en programacin de sistemas, clculo numrico, web, mviles (Android, Symbian), mquinas virtuales Java y .NET, etc. Casos de xito: Google App Engine (entorno de Cloud Computing de Google, que soporta Java y Python). Ms en http://www.python.org/about/success/

Comenzamos....

Python: Conceptos generales

Lenguaje de programacin de uso general. De muy alto nivel VHLL (Very high-level programming language)

Alto nivel de abstraccin (uso de listas, tuplas, diccionarios tablas hashing).

Multiplataforma (Linux, Mac, Windows) Multiparadigma (imperativo, orientado a objetos y funcional) Interpretado, dinmico, fuertemente tipado, gestin de memoria Python: Lenguaje + biblioteca estndar + mdulos de extensin

Lenguaje: Estructuras, palabras reservadas, funciones genricas, etc. Ej: print, if... else..., def ():. Biblioteca estndar: Conjunto de mdulos por defecto en la distribucin. Ej: os, cPickle, datetime. Mdulos de extensin: componentes extra. Ej: acceso a bases de datos, XML, YAML, entorno grfico, web.

Instalacin de Python

De serie en la mayora de distros Linux Para Windows y Mac, www.python.org

Se instala:

Intrprete Python (intrprete + compilador cuando sea necesario) IDLE: IDE escrito en Tkinter Documentacin mdulos instalados Manual Python

El intrprete de Python

Mini tutorial: funciones y clases

Mini tutorial: funciones y clases

Mini tutorial: Control de flujo

Mini tutorial: Tipos de datos


Nmeros Secuencias

Mutables

Listas Tuplas Cadenas

Inmutables

Diccionarios Conjuntos

LISTAS: Todo potencia!!!

Instanciacin:

a = [] a = ['Odio el Hola Mundo',OBJECT] a = ['ngel Luis','Garca','Garca',32,[18,5,1978]] a[0] devuelve 'ngel Luis' a[3] devuelve 32 a[4][1] devuelve 5 for i in a: i....

Acceso:

Mtodos: len(x), count(x), index(x), append(x), remove(x), etc.

TUPLAS: Listas inmutables

Instanciacin:

a = () a = ('Hola Lan Party', 2010) a = (OBJECT, [], (243,343)) a[2] devuelve tupla (243, 343)

Acceso:

Mtodos: count(x), index(x)

DICCIONARIOS: Tablas hashing

Instanciacin:

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

LAS CLAVES SON UNVOCAS

Acceso:

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

Mtodos: len(x), has_key(k), del(d['x']), etc.

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'} c1 = tuple(l) c1 = ('Lan Party', 2010) c2 = list(t) c3 = dict(u) c2 = ['Odio el Hola Mundo', 'Desde siempre'] c3 = {1: 'Python', 2: 'wxPython'}

Conversiones:

c4 = d.items() c4 = [(1, 'XML'), (2, 'IronPython'), (3, 'ReportLab')] c5 = d.keys() c5 = [1, 2, 3] c6 = d.values() c6 = ['XML', 'IronPython', 'ReportLab']

Ms de funciones... parmetros

Ms de OO... herencia

Ms cosas importantes de OO y funciones... que veremos otro da...

OO

Herencia mltiple y MRO Emular polimorfismo (sobrecarga de mtodos). Mtodos especiales (__dict__, __all__, etc) Metaclases Paso de parmetros: listas y diccionarios. Atributos de funcin. Lambda, yield, etc.

Funciones

Ms cosas importantes... que veremos otro da....


Iteradores.

Expresiones regulares (mdulo re). Comprensin de listas. Funciones decoradoras. Entrada/salida (file y los mdulos os, codecs). Interaccin con el sistema (mdulos sys, os). Manejador de excepciones (try/except/finally). Codificacin (sitecustomize, utf-8, decode/encode) Formateo cadenas (%s, %d, etc)

Ejemplo: Imports, persistencia y otras hierbas, en Python

Aplicacin sencilla de registro de persona (cargar, guardar, modificar). Creacin de mdulos, cada cosa en su sitio!!!

clases_base.py: Entidades. persistencia.py: Persistencia de datos. clases_aplicacion.py: Lgica de negocio adaptada.


principal.py: Aplicacin.

Al compilar principal.py

Ficheros generados
Ficheros compilados pyc

Ejecutando...

from modulo import *

Segunda parte.... Are you ready?

El framework wxPython

Creado por Robin Dunn, en 1995. Es una librera grfica para Python. Permite crear programas con una interfaz grfica robusta y de gran funcionalidad, fcil y simple. Es un wrapper de la plataforma wxWidgets (escrita en C++).
(Una adaptacin 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 documentacin)

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

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 Sintxis y estucturas fundamentales de Python. Programacin orientada a objetos.

Conocimientos previos para utilizar wxPython:


Por qu? Se utilizan clases, se heredan componentes y se hace override en sus mtodos y atributos.

Cmo funciona una aplicacin wxPython?

wxPython sirve para crear aplicaciones grficas orientadas a eventos. A cada evento se le puede asociar un cdigo, mediante un proceso llamado binding. El manejador de eventos es el cdigo que se dispara a consecuencia de la generacin de un evento. Una aplicacin wxPython espera a que se generen eventos, asociando los mismos a un cdigo, llamado manejador de eventos.

Estructura de una aplicacin wxPython

Una aplicacin wxPython se divide en tres partes:


Importar el mdulo wx (y dems cosas...) Creacin de la aplicacin wxPython. Creacin del contenedor.

Componentes. Binding. Manejadores de eventos.

Creacin de una aplicacin wxPython

Creacin de una aplicacin wxPython

Binding y manejadores de eventos

Binding y manejadores de eventos

Y al hacer click en el botn

Dnde est la documentacin de wxPython? Frame? ein?

Documentacin obligatoria

wxPython Demo WxWidgets Reference

Google

Sizers

Los widgets pueden disponerse con wx.Point y wx.Size, mediante coordenadas. Sizer: Mecanismo de disposicin de widgets en wxPython.

Maneja el tamao y posicin 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 aadirse por separado al sizer. El sizer administra la posicin de los widgets.

Sizers

Un sizer en wxPython es un objeto con el nico propsito de administrar el posicionamiento de un conjunto de widgets dentro de un contenedor. El sizer es la representacin 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.

Sizers

Tipos de sizers:

wx.BoxSizer wx.FlexGridSizer wx.GridSizer wx.GridBagSizer wx.StaticBoxSizer wx.BoxSizer y wx.FlexGridSizer

Los ms importantes:

Sizers

Aprender a utilizar sizers manualmente es: UNA LOCURA Alguna solucin? Utilizar aplicaciones de diseo de pantallas con generacin automtica de cdigo Python y wxPython. wxGlade wxFormBuilder wxDesigner

wxFormBuilder

Entorno WYSIWYG para diseo grfico de interfaces para wxWidgets. Posibilidad de generar cdigo Python. Contiene muchos widgets. Trabajar con sizers en wxFormBuilder es muy fcil. http://wxformbuilder.org/ Tutorial: wxFormBuilder en El Viaje del Navegante

Cosas que veremos otro da...


Widgets ms comunes. Mens. Widgets avanzados. MVC en wxPython. Imgenes. Impresin. Los controles Grid y Tree. ....y un largo etctera.

Ejemplos completos de wxPython

Interfaz grfica de gestin de usuarios. Editor de texto. Combobox y paso de parmetros entre widgets. pyLorca, creacin automtica de clases.

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

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 Ms herramientas aqu.

Anexo II: Recursos documentales en la red

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

Anexo III: Libros de Python, en espaol

PYTHON GUA DE REFERENCIA


ALEX MARTELLI EDITORIAL O'REILLY MARK SUMMERFIELD EDITORIAL ADDISON WESLEY JIM KNOWLTON EDITORIAL WROX ADRIAN HOLOVATY Y JACOB KAPLAN-MOSS EDITORIAL APRESS

PROGRAMACIN PYTHON 3

PYTHON, CREAR MODIFICAR REUTILIZAR


LA GUA DEFINITIVA DE DJANGO


El secreto para aprender Python y wxPython...

Buscar, encontrar, modificar, probar y ver porqu no funciona.

Muchas gracias a todos!

También podría gustarte