PythonywxPythonIESAl Andalus PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 54

Desarrollo de aplicaciones de escritorio con Python y wxPython

ngel Luis Garca Garca http://elviajedelnavegante.blogspot.co

!Por "u# Python$

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

Multitud de mdulos (web, mviles, escritorio, SOAP, etc). Ampliable mediante C/C++. Respaldado por Google, Facebook, NASA, etc. Antdoto para el Sndrome de la Cadena chorizo.

Amplia documentacin.

%adenas chori&o...

El Zen de Python

Bello mejor que feo. Explcito es mejor que implcito. Simple es mejor que complejo. Complejo es mejor que complicado. Plano es mejor que anidado. Disperso es mejor que denso. La legibilidad cuenta. Los casos especiales no son tan especiales como para quebrantar las reglas. Aunque lo prctico gana a la pureza. Los errores no deberan dejarse nunca pasar.

El Zen de Python

A menos que hayan sido silenciados explcitamente. Frente a la ambigedad, rechaza la tentacin de adivinar. Debera haber una -y preferiblemente slo una- manera obvia de hacerlo. Aunque esa manera puede no ser obvia al principio a menos que usted sea holands. Ahora es mejor que nunca. Aunque nunca es a menudo mejor que ya mismo. Si la implementacin es difcil de explicar, es una mala idea. Si la implementacin es fcil de explicar, puede que sea una buena idea. Los espacios de nombres (namespaces) son una gran idea Hagamos ms de esas cosas!

Resumiendo...

Python: 'istoria

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

( ple entaciones 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 CLR de Microsoft, para acceder al framework de .NET. PyPy: Implementacin de Python escrita en Python (para rizar ms el rizo).

)ersiones de Python

Ayuda para elegir entre 2.xx y 3.xx: http://wiki.python.org/moin/Python2orPython3 Tres versiones a Abril 2011:

Python 2.6 Python 2.7 Python 3.2 Qu mdulos necesitamos? Mayora compatibles con 2.6 Futuro? 2.xx es incompatible con 3.xx en algunos aspectos Mayora de frameworks funcionan con 2.xx.

Cul elegir? Depende de nuestras exigencias.

*l +uturo de Python

Lenguaje de propsito general, con ms de 20 aos de vida. Desarrollo esponsorizado 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) de base y de terceros, ampliable. Utilizado en programacin de sistemas, clculo numrico, web, mviles (Android, Symbian), escritorio, 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/

%onceptos 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 automtica.

%o

posici,n...
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 (pyodbc, mysqldb, etc), XML, YAML, entorno grfico (wx, Qt, GTK, Tk, etc), web (Django, webpy, TurboGears, Pylons, etc), y un largo etctera.

Python: Lenguaje + biblioteca estndar + mdulos de extensin

*l int#rprete Python

!%, o ejecutar/desarrollar c,digo Python$ -(.

Intrprete: rprete probar estructuras, tipos de datos, mdulos, expresiones regulares, etc. Intrprete + fichero .py: .py ejecutar en consola fichero con cdigo Python. P.e.: python ejemplo.py IDE: IDE IDLE, PyScripter (Windows), Stani's Python Editor, Eclipse (pyDev), NetBeans, Geany, etc. RAD: RAD BOA Constructor, SharpDevelop (IronPython)

!%, o ejecutar/desarrollar c,digo Python$ -y ((.

Intrpretes mejorados: mejorados Shell's interactivos con caractersticas mejoradas. P.e.: Dreampie, pyCrust, pyShell. Editores: Editores emacs, vi, Editra, SciTE, NotePad++, etc. GUI's: GUI's Creacin/diseo interfaces grficas. P.e.: wxFormBuilder (wx), Glade (wx, GTK), Monkey Studio (Qt), etc.

!%, o ejecutar/desarrollar c,digo Python$ -y (((.

Lista completa de editores, gui's e ide's en http://wiki.python.org/moin/PythonEditors.


---

Lo mnimo que se le debe de pedir a cualquier IDE editor, para desarrollar en Python, es la indentacin, coloreado y completitud de cdigo.
---

PRUEBA, COMPARA Y SI ENCUENTRAS ALGO MEJOR, INSTLALO

Python: tipos de datos

Tipos de datos:

Nmeros: 2, 2.34, 4000 Booleanos: True, False Listas: ['Hola','Mundo',2011] Tuplas: ('Hola','Mundo',2011) Diccionarios: {clave1:'Hola', clave2:'Mundo'} Conjuntos. Etc.

Python: progra i perativa

aci,n

Estructuras iterativas:

for x in y while if then... else... def mi_funcion(): def mi_funcion(param1, param2):

Saltos condicionales:

Funciones:

Python: P//
class mi_primera_clase(object):
def __init__(self, param1, param2):
# Constructor. self.atributo1 = param1 self.atributo2 = param2

def getAtributos(self):
return self.atributo1, self.atributo2

def setAtributos(self, atrib1, atrib2):


self.atributo1 = atrib1 self.atributo2 = atrib2

01s Python2 3

1s

adera4

Metaclases. Iteradores. Properties de clases. Decoradores. Programacin funcional: map, reduce, lambda, Ms tipos: named tuples, Formateo de cadenas. Codificaciones, .... y un largo etctera.

*je

plo de c,digo Python2 (

*je

plo de c,digo Python2 ((

Libros de Python, en espaol

PYTHON GUA DE REFERENCIA

ALEX MARTELLI EDITORIAL O'REILLY

PROGRAMACIN PYTHON 3

MARK SUMMERFIELD EDITORIAL ADDISON WESLEY

PYTHON, CREAR MODIFICAR REUTILIZAR

JIM KNOWLTON EDITORIAL WROX

LA GUA DEFINITIVA DE DJANGO

ADRIAN HOLOVATY Y JACOB KAPLAN-MOSS EDITORIAL APRESS

Python en (nternet

Python para todos (Ral Gonzlez Duque) Introduccin a Python (ngel Luis Garca Garca) Comunidad Python Argentina (PyAr) (http://docs.python.org.ar/tutorial/contenido.html) Documentacin Python en SourceForge (http://pyspanishdoc.sourceforge.net/)

*l +ra

ewor5 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)
The only reason wxPython isn't the standard Python GUI toolkit is that Tkinter was there first.Guido van Rossum

www.wxpython.org (software y documentacin)

*l +ra

ewor5 wxPython

Versiones a Abril 2011 (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.

!%, o +unciona una aplicaci,n 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.

*structura de una aplicaci,n 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.

%reaci,n de una aplicaci,n wxPython

%reaci,n de una aplicaci,n wxPython

6inding y eventos

anejadores de

6inding y eventos

anejadores de

Y al hacer click en el botn

(n+or

aci,n sobre wxPython

www.wxpython.org wxpython.org: wxPython Demo San Google Dos libros:

wxPython De

o2 y (

Demo que muestra algunas de las capacidades de wxPython. Ejemplos de widgets completos y comentados, totalmente funcionales. Disponible para Linux, Windows y Mac.

wxPython De

o2 y ((

widgets... richtextctrl

widgets... toolboo5

widgets... listboo5

widgets... speed

eter

widgets... +latnoteboo5

widgets... ulti bittorrent

atelistctrl

widgets... pea5

eter

7idgets... piectrl

widgets... ribbonbar

widgets... aui

8i&ers

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.

8i&ers

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.

8i&ers

Aprender a utilizar sizers manualmente es:

UNA LOCURA Utilizar aplicaciones de diseo de pantallas con generacin automtica de cdigo Python y wxPython.

Alguna solucin?

wxGlade wxFormBuilder wxDesigner PythonCard

wx9or

6uilder2 y :

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

wx9or

6uilder2 y ;

wx9or

6uilder2 y <

*l secreto para aprender Python y wxPython...

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

Muchas gracias a todos! Gracias a todos

También podría gustarte