Está en la página 1de 54

Desarrollo de aplicaciones de escritorio con Python y wxPython

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


Por qu Python?

Sintaxissencilla. Fcildeaprender. Multiplataforma(Unix, Mac,Windows). Multiparadigma (imperativo,funcional, OO)[sepuedenmezclarentre


ellos].

Multituddemdulos(web, mviles,escritorio,SOAP, etc). AmpliablemedianteC/C++. RespaldadoporGoogle, Facebook,NASA,etc. AntdotoparaelSndromede laCadenachorizo.

Ampliadocumentacin.

Cadenas chorizo...

El Zen de Python

Bellomejorquefeo. Explcitoesmejorqueimplcito. Simpleesmejorquecomplejo. Complejoesmejorquecomplicado. Planoesmejorqueanidado. Dispersoesmejorquedenso. Lalegibilidadcuenta. Loscasosespecialesnosontanespecialescomoparaquebrantarlasreglas. Aunqueloprcticoganaalapureza. Loserroresnodeberandejarsenuncapasar.

El Zen de Python

Amenosquehayansidosilenciadosexplcitamente. Frentealaambigedad,rechazalatentacindeadivinar. Deberahaberunaypreferiblementeslounamaneraobviadehacerlo. Aunqueesamanerapuedenoserobviaalprincipioamenosqueustedsea holands. Ahoraesmejorquenunca. Aunquenuncaesamenudomejorqueyamismo. Silaimplementacinesdifcildeexplicar,esunamalaidea. Silaimplementacinesfcildeexplicar,puedequeseaunabuenaidea. Losespaciosdenombres(namespaces)sonunagranideaHagamosmsde esascosas!

Resumiendo...

Python: Historia

CreadoporGuidovanRossum(elbenevolente dictadorvitalicio)afinalesdelos80. http://www.python.org/~guido/

Desde2005,enGoogle(MountainView). Fijadirectricesydecisionesfinalessobre Python.

AdministradoporPSF(PythonSoftware Foundation),conlicenciadecdigoabierto (PSFL)compatibleconGPLdeGNUapartirde versin2.1.1. Sitioweboficial:www.python.org

Implementaciones de Python

CPython:(oPython)Implementacindereferencia.Compila,interpretay contienemduloscodificadosenCestndar. Jython:ImplementacinparalaJVM(MquinaVirtualJava)accediendoa lasbibliotecasdeJava. IronPython:ImplementacinparaelCLRdeMicrosoft,paraaccederal frameworkde.NET. PyPy:ImplementacindePythonescritaenPython(pararizarmselrizo).

Versiones de Python

Ayudaparaelegirentre2.xxy3.xx: http://wiki.python.org/moin/Python2orPython3 TresversionesaAbril2011:

Python2.6 Python2.7 Python3.2 Qumdulosnecesitamos?Mayoracompatiblescon2.6 Futuro?2.xxesincompatiblecon3.xxenalgunosaspectos Mayoradeframeworksfuncionancon2.xx.

Culelegir?Dependedenuestrasexigencias.

El futuro de Python

Lenguajedepropsitogeneral,conmsde20aosdevida. DesarrolloesponsorizadoporGoogle. UtilizadoenIndustrialLight&Magic,Pixar,BitTorrent,U.S.National WeatherService,NASA,NSA,Fermi,Corel,RedHat,Lockheed Martin,Facebook,etc. Conferenciasanualesmundiales(PyCon). Multituddemdulos(libreras)debaseydeterceros,ampliable. Utilizadoenprogramacindesistemas,clculonumrico,web,mviles (Android,Symbian),escritorio,mquinasvirtualesJavay.NET,etc. Casosdexito:GoogleAppEngine(entornodeCloudComputingde Google,quesoportaJavayPython).Msen http://www.python.org/about/success/

Conceptos generales

Lenguajedeprogramacindeusogeneral. DemuyaltonivelVHLL(Veryhighlevelprogramming language)

Altoniveldeabstraccin(usodelistas,tuplas, diccionariostablashashing).

Multiplataforma(Linux,Mac,Windows) Multiparadigma(imperativo,orientadoaobjetosyfuncional) Interpretado,dinmico,fuertementetipado,gestinde memoriaautomtica.

Composicin...

Python:Lenguaje+bibliotecaestndar+mdulosdeextensin

Lenguaje:Estructuras,palabrasreservadas,funciones genricas,etc.Ej:print,if...else...,def():. Bibliotecaestndar:Conjuntodemdulospordefectoen ladistribucin.Ej:os,cPickle,datetime. Mdulosdeextensin:componentesextra.Ej:accesoa basesdedatos(pyodbc,mysqldb,etc),XML,YAML, entornogrfico(wx,Qt,GTK,Tk,etc),web(Django, webpy,TurboGears,Pylons,etc),yunlargoetctera.

El intrprete Python

Cmo ejecutar/desarrollar cdigo Python? (I)

Intrprete:probarestructuras,tiposdedatos, rprete mdulos,expresionesregulares,etc. Intrprete+fichero.py:ejecutarenconsolafichero rprete+fichero.py concdigoPython.P.e.:pythonejemplo.py IDE:IDLE,PyScripter(Windows),Stani'sPython IDE Editor,Eclipse(pyDev),NetBeans,Geany,etc. RAD:BOAConstructor,SharpDevelop RAD (IronPython)

Cmo ejecutar/desarrollar cdigo Python? (y II)

Intrpretesmejorados:Shell'sinteractivoscon rpretesmejorados caractersticasmejoradas.P.e.:Dreampie, pyCrust,pyShell. Editores:emacs,vi,Editra,SciTE,NotePad++,etc. Editores GUI's:Creaci n/diseointerfacesgrficas.P.e.: GUI's wxFormBuilder(wx),Glade(wx,GTK),Monkey Studio(Qt),etc.

Cmo ejecutar/desarrollar cdigo Python? (y III)

Listacompletadeeditores,gui'seide'sen http://wiki.python.org/moin/PythonEditors.

LomnimoqueseledebedepediracualquierIDE editor,paradesarrollarenPython,eslaindentacin, coloreadoycompletituddecdigo.

PRUEBA,COMPARAYSIENCUENTRASALGO MEJOR,INSTLALO

Python: tipos de datos

Tiposdedatos:

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

Python: programacin imperativa

Estructurasiterativas:

forxiny while ifthen...else... defmi_funcion(): defmi_funcion(param1,param2):

Saltoscondicionales:

Funciones:

Python: POO
classmi_primera_clase(object):
def__init__(self,param1,param2):
#Constructor. self.atributo1=param1 self.atributo2=param2

defgetAtributos(self):
returnself.atributo1,self.atributo2

defsetAtributos(self,atrib1,atrib2):
self.atributo1=atrib1 self.atributo2=atrib2

Ms Python, ms madera!

Metaclases. Iteradores. Propertiesdeclases. Decoradores. Programacinfuncional:map,reduce,lambda, Mstipos:namedtuples, Formateodecadenas. Codificaciones,....yunlargoetctera.

Ejemplo de cdigo Python, I

Ejemplo de cdigo Python, II

Libros de Python, en espaol

PYTHONGUADEREFERENCIA

ALEXMARTELLI EDITORIALO'REILLY

PROGRAMACINPYTHON3

MARKSUMMERFIELD EDITORIALADDISONWESLEY

PYTHON,CREARMODIFICARREUTILIZAR

JIMKNOWLTON EDITORIALWROX

LAGUADEFINITIVADEDJANGO

ADRIANHOLOVATYYJACOBKAPLANMOSS EDITORIALAPRESS

Python en Internet

Pythonparatodos(RalGonzlezDuque) IntroduccinaPython(ngelLuisGarcaGarca) ComunidadPythonArgentina(PyAr) (http://docs.python.org.ar/tutorial/contenido.html) DocumentacinPythonenSourceForge (http://pyspanishdoc.sourceforge.net/)

El framework wxPython

CreadoporRobinDunn,en1995. EsunalibreragrficaparaPython. Permitecrearprogramasconunainterfazgrficarobustaydegran funcionalidad,fcilysimple. EsunwrapperdelaplataformawxWidgets(escritaenC++).(Unaadaptacin


delabibliotecawxWidgetsparaserusadaenPython)

EsOpenSource. Multiplataforma(Windows,Unix,Mac). Muydocumentado. Proyectomuyactivo.(19/10/2010wxPython2.9.1.1) The only reason


wxPython isn't the standard Python GUI toolkit isthat Tkinter was there first.Guido van Rossum

www.wxpython.org(softwareydocumentacin)

El framework wxPython

VersionesaAbril2011(paraPython2.5,2.6y2.7):

Estable:2.8.11.0 Desarrollo:2.9.1.1 SintxisyestucturasfundamentalesdePython. Programacinorientadaaobjetos.

ConocimientospreviosparautilizarwxPython:

Porqu?Seutilizanclases,seheredancomponentes ysehaceoverrideensusmtodos.

Cmo funciona una aplicacin wxPython?

wxPythonsirveparacrearaplicacionesgrficasorientadasa eventos. Acadaeventoselepuedeasociaruncdigo,medianteun procesollamadobinding. Elmanejadordeeventoseselcdigoquesedisparaa consecuenciadelageneracindeunevento. UnaaplicacinwxPythonesperaaquesegenereneventos, asociandolosmismosauncdigo,llamadomanejadorde eventos.

Estructura de una aplicacin wxPython

UnaaplicacinwxPythonsedivideentrespartes:

Importarelmdulowx(ydemscosas...) CreacindelaaplicacinwxPython. Creacindelcontenedor.


Componentes. Binding. Manejadoresdeeventos.

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

Informacin sobre wxPython

www.wxpython.org wxpython.org:wxPythonDemo SanGoogle Doslibros:

wxPython Demo, y I

Demoquemuestraalgunasdelascapacidadesde wxPython. Ejemplosdewidgetscompletosycomentados, totalmentefuncionales. DisponibleparaLinux,WindowsyMac.

wxPython Demo, y II

widgets... richtextctrl

widgets... toolbook

widgets... listbook

widgets... speedmeter

widgets... flatnotebook

widgets... ultimatelistctrl bittorrent

widgets... peakmeter

Widgets... piectrl

widgets... ribbonbar

widgets... aui

Sizers

Loswidgetspuedendisponerseconwx.Pointywx.Size,mediante coordenadas. Sizer:MecanismodedisposicindewidgetsenwxPython.

Manejaeltamaoyposicindesuswidgets,basadoenunconjuntode reglas. Seasignaauncontenedor(wx.Panelwx.Frame). Esunalgoritmoparadisponerenmarcarungrupodewidgets. Lossubwidgetsquesecreandentrodeuncontenedordebende aadirseporseparadoalsizer. Elsizeradministralaposicindeloswidgets.

Sizers

UnsizerenwxPythonesunobjetoconelnico propsitodeadministrarelposicionamientode unconjuntodewidgetsdentrodeun contenedor. Elsizereslarepresentacindeunalgoritmode posicionamientodepantalla(nouncontenedor widget). Unsizeresunainstanciadelaclasewx.Sizer. Unsizerpuedeestarincluidoenotrosizer.

Sizers

Aprenderautilizarsizersmanualmentees:

UNALOCURA Utilizaraplicacionesdediseodepantallascon generacinautomticadecdigoPythony wxPython.


Algunasolucin?

wxGlade wxFormBuilder wxDesigner PythonCard

wxFormBuilder, y 1

EntornoWYSIWYGparadiseogrficodeinterfaces parawxWidgets. PosibilidaddegenerarcdigoPython. Contienemuchoswidgets. TrabajarconsizersenwxFormBuilderesmuyf cil. http://wxformbuilder.org/ Tutorial:wxFormBuilderenElViajedelNavegante

wxFormBuilder, y 2

wxFormBuilder, y 3

El secreto para aprender Python y wxPython...

Buscar,encontrar, modificar,probary verporquno funciona.


Muchas gracias a todos! Gracias a todos

También podría gustarte