Post on 06-Feb-2018
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)
http://elviajedelnavegante.blogspot.com/
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/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 cdigo abierto (Foundation), con licencia de cdigo abierto (PSFLPSFL) ) compatible con compatible con GPLGPL de de GNUGNU a partir de versin a partir de versin 2.1.1.2.1.1.
Sitio web oficial:Sitio web oficial: www.python.orgwww.python.org
http://www.python.org/~guido/http://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)
Cul elegir? Depende de nuestras exigencias. 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)
http://wiki.python.org/moin/Python2orPython3
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/
http://blog.apsl.net/2010/07/29/va-a-desaparecer-python/http://code.google.com/intl/ca-ES/appengine/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
http://www.python.org/
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
Inmutables Tuplas Cadenas
Diccionarios Conjuntos
LISTAS: Todo potencia!!! Instanciacin:
a = [] a = ['Odio el Hola Mundo',OBJECT] a = ['ngel Luis','Garca','Garca',32,[18,5,1978]]
Acceso: a[0] devuelve 'ngel Luis' a[3] devuelve 32 a[4][1] devuelve 5 for i in a: i....
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))
Acceso: a[2] devuelve tupla (243, 343)
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'}
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']
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
Funciones Paso de parmetros: listas y diccionarios. Atributos de funcin. Lambda, yield, etc.
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.
Ficheros generadosAl compilar principal.py
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
http://www.wxpython.org/
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: Sintxis y estucturas fundamentales de Python. Programacin orientada a objetos.
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 ev