Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Python Y, ¡Hoy Hará Sol!: Wxpython
Python Y, ¡Hoy Hará Sol!: Wxpython
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
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
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)
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....
Lenguaje de programacin de uso general. De muy alto nivel VHLL (Very high-level programming language)
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
Se instala:
Intrprete Python (intrprete + compilador cuando sea necesario) IDLE: IDE escrito en Tkinter Documentacin mdulos instalados Manual Python
El intrprete de Python
Nmeros Secuencias
Mutables
Inmutables
Diccionarios Conjuntos
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:
Instanciacin:
a = () a = ('Hola Lan Party', 2010) a = (OBJECT, [], (243,343)) a[2] devuelve tupla (243, 343)
Acceso:
Instanciacin:
Acceso:
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
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
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)
Aplicacin sencilla de registro de persona (cargar, guardar, modificar). Creacin de mdulos, cada cosa en su sitio!!!
Al compilar principal.py
Ficheros generados
Ficheros compilados pyc
Ejecutando...
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
Estable: 2.8.11.0 Desarrollo: 2.9.1.1 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.
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.
Importar el mdulo wx (y dems cosas...) Creacin de la aplicacin wxPython. Creacin del contenedor.
Documentacin obligatoria
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:
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
Widgets ms comunes. Mens. Widgets avanzados. MVC en wxPython. Imgenes. Impresin. Los controles Grid y Tree. ....y un largo etctera.
Interfaz grfica de gestin de usuarios. Editor de texto. Combobox y paso de parmetros entre widgets. pyLorca, creacin automtica de clases.
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.
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/
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