0% encontró este documento útil (0 votos)
926 vistas64 páginas

Python y WxPython

Este documento presenta una introducción a Python y wxPython por parte de Ángel Luis García García. Brevemente describe su experiencia laboral y proyectos personales con diferentes lenguajes de programación antes de descubrir Python en 2009. Luego proporciona una visión general de Python, incluyendo su historia, implementaciones, versiones actuales y razones por las que es un buen lenguaje para el orador. Finalmente, introduce el framework wxPython para desarrollo de interfaces gráficas en Python.

Cargado por

barzana
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
926 vistas64 páginas

Python y WxPython

Este documento presenta una introducción a Python y wxPython por parte de Ángel Luis García García. Brevemente describe su experiencia laboral y proyectos personales con diferentes lenguajes de programación antes de descubrir Python en 2009. Luego proporciona una visión general de Python, incluyendo su historia, implementaciones, versiones actuales y razones por las que es un buen lenguaje para el orador. Finalmente, introduce el framework wxPython para desarrollo de interfaces gráficas en Python.

Cargado por

barzana
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 64

Python y wxPython, ¡hoy hará Sol!

Ángel Luis García García


Un murciano que sabe algo de
Python...
● ¿Quién soy? Ángel Luis
● UMU: Ing. Técnico Inf. Gestión
● 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 (Ofimática)
– Proyectos personales (VB/PB/Python)...
(algunos sin cobrar...)
● Programación (no web), bases de datos, mantenimiento
de sistemas (servidores, datáfonos, PC's), formación
SEPTIEMBRE 2009
...una revelación,

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. ● Multitud de módulos
(web, móviles, escritorio,
● Fácil de aprender. SOAP, etc).
● Multiplataforma (Unix, ● Ampliable mediante C
Mac, Windows). y C++.
● Multiparadigma ● Respaldado por
(imperativo, funcional, Google, Facebook,
OO) [se pueden mezclar entre ellos] NASA, etc.
● Amplia documentación ● Tengo el Síndrome 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 código abierto (PSFL)
compatible con GPL de GNU a partir de versión
2.1.1.
● Sitio web oficial: www.python.org
Implementaciones de Python

● CPython: (o Python) Implementación de referencia. Compila,


interpreta y contiene módulos codificados en C estándar.
● Jython: Implementación para la JVM (Máquina Virtual Java)
accediendo a las bibliotecas de Java.
● IronPython: Implementación para el CRL de Microsoft, para
acceder al framework de .NET.
● PyPy: Implementación de Python escrita en Python (para rizar
más el rizo).
Python.... ¿versión 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)
● ¿Cuál elegir? Depende de nuestras exigencias.
– ¿Qué modulos necesitamos? Mayoría compatibles con 2.6
– ¿Futuro? 2.XX es incompatible con 3.XX
– Mayoría de frameworks funcionan con 2.XX (Django, PIL, etc)
Mi recomendación de versión Python
El futuro de Python
● Artículo: http://blog.apsl.net/2010/07/29/va-a-desaparecer-python/
● Lenguaje de propósito general, con más de 20 años 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 módulos (librerías), ampliable.
● Utilizado en programación de sistemas, cálculo numérico, web,
móviles (Android, Symbian), máquinas virtuales Java y .NET, etc.
● Casos de éxito: Google App Engine (entorno de Cloud Computing de Google,
que soporta Java y Python). Más en http://www.python.org/about/success/
Comenzamos....
Python: Conceptos generales
● Lenguaje de programación de uso general.
● De muy alto nivel ó VHLL (Very high-level programming language)
– Alto nivel de abstracción (uso de listas, tuplas, diccionarios ó tablas
hashing).
● Multiplataforma (Linux, Mac, Windows)
● Multiparadigma (imperativo, orientado a objetos y funcional)
● Interpretado, dinámico, fuertemente tipado, gestión de memoria
● Python: Lenguaje + biblioteca estándar + módulos de extensión
– Lenguaje: Estructuras, palabras reservadas, funciones genéricas, etc.
Ej: print, if... else..., def ():.
– Biblioteca estándar: Conjunto de módulos por defecto en la
distribución. Ej: os, cPickle, datetime.
– Módulos de extensión: componentes extra. Ej: acceso a bases de datos,
XML, YAML, entorno gráfico, web.
Instalación de Python
● De serie en la mayoría de distros Linux
● Para Windows y Mac, www.python.org

● Se instala:
– Intérprete Python (intérprete + compilador cuando sea necesario)
– IDLE: IDE escrito en Tkinter
– Documentación módulos instalados
– Manual Python
El intérprete de Python
Mini tutorial: funciones y clases
Mini tutorial: funciones y clases
Mini tutorial: Control de flujo
Mini tutorial: Tipos de datos
● Números
● Secuencias
– Mutables
● Listas
– Inmutables
● Tuplas
● Cadenas
● Diccionarios
● Conjuntos
LISTAS: ¡¡¡Todo potencia!!!
● Instanciación:
– a = []
– a = ['Odio el Hola Mundo',OBJECT]
– a = ['Ángel Luis','García','García',32,[18,5,1978]]
● Acceso:
– a[0] devuelve 'Ángel Luis'
– a[3] devuelve 32
– a[4][1] devuelve 5
– for i in a: i....
● Métodos: len(x), count(x), index(x), append(x), remove(x), etc.
TUPLAS: Listas inmutables

● Instanciación:
– a = ()
– a = ('Hola Lan Party', 2010)
– a = (OBJECT, [], (243,343))
● Acceso:
– a[2] devuelve tupla (243, 343)
● Métodos: count(x), index(x)
DICCIONARIOS: Tablas hashing
● Instanciación:
– a = {}
– a = {'clave1':valorX, 'clave2':valorY}
– a = {'angel':32, 'emilia':32, 200:'Python' }
● LAS CLAVES SON UNÍVOCAS
● Acceso:
– a['angel'] devuelve 32
– a[200] devuelve 'Python'
– Mediante iteradores...
● Métodos: 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']
Más de funciones... parámetros
Más de OO... herencia
Más cosas importantes de OO y
funciones... que veremos otro día...
● OO
– Herencia múltiple y MRO
– Emular polimorfismo (sobrecarga de métodos).
– Métodos especiales (__dict__, __all__, etc)
– Metaclases
● Funciones
– Paso de parámetros: listas y diccionarios.
– Atributos de función.
– Lambda, yield, etc.
Más cosas importantes... que
veremos otro día....
● Iteradores.
● Expresiones regulares (módulo re).
● Comprensión de listas.
● Funciones decoradoras.
● Entrada/salida (file y los módulos os, codecs).
● Interacción con el sistema (módulos sys, os).
● Manejador de excepciones (try/except/finally).
● Codificación (sitecustomize, utf-8, decode/encode)
● Formateo cadenas (%s, %d, etc)
Ejemplo: Imports, persistencia y
otras hierbas, en Python
● Aplicación sencilla de registro de persona (cargar,
guardar, modificar).
● Creación de módulos, ¡¡¡cada cosa en su sitio!!!
– clases_base.py: Entidades.
– persistencia.py: Persistencia de datos.
– clases_aplicacion.py: Lógica de negocio adaptada.
– principal.py: Aplicación.
Ficheros generados
Al “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 librería gráfica para Python.
● Permite crear programas con una interfaz gráfica robusta y de
gran funcionalidad, fácil y simple.
● Es un wrapper de la plataforma wxWidgets (escrita en C++).
(Una adaptación de la biblioteca wxWidgets para ser usada en Python)
● Es Open Source. The only reason
wxPython isn't the
● Multiplataforma (Windows, Unix, Mac). standard Python GUI
toolkit is that Tkinter
● Muy documentado. was there first.
● Proyecto muy activo. (19/10/2010 wxPython 2.9.1.1) Guido van Rossum
● www.wxpython.org (software y documentación)
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:
– Sintáxis y estucturas fundamentales de Python.
– Programación orientada a objetos.
● ¿Por qué? Se utilizan clases, se heredan
componentes y se hace override en sus métodos y
atributos.
¿Cómo funciona una aplicación
wxPython?
● wxPython sirve para crear aplicaciones gráficas
orientadas a eventos.
● A cada evento se le puede asociar un código,
mediante un proceso llamado binding.
● El manejador de eventos es el código que se
dispara a consecuencia de la generación de un
evento.
● Una aplicación wxPython espera a que se generen
eventos, asociando los mismos a un código,
llamado manejador de eventos.
Estructura de una aplicación
wxPython
● Una aplicación wxPython se divide en tres partes:
– Importar el módulo wx (y demás cosas...)
– Creación de la aplicación wxPython.
– Creación del contenedor.
● Componentes.
● Binding.
● Manejadores de eventos.
Creación de una aplicación
wxPython
Creación de una aplicación
wxPython
Binding y manejadores de eventos
Binding y manejadores de eventos

Y al hacer click en el botón


¿Dónde está la documentación de
wxPython? ¿Frame? ¿ein?
Documentación obligatoria

● wxPython Demo

● WxWidgets Reference

● Google
Sizers
● Los widgets pueden disponerse con wx.Point y wx.Size,
mediante coordenadas.
● Sizer: Mecanismo de disposición de widgets en wxPython.
– Maneja el tamaño y posición 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 añadirse por separado al sizer.
– El sizer administra la posición de los widgets.
Sizers
● Un sizer en wxPython es un objeto con el único
propósito de administrar el posicionamiento de un
conjunto de widgets dentro de un contenedor.
● El sizer es la representación 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
● Los más importantes:
– wx.BoxSizer y wx.FlexGridSizer
Sizers
● Aprender a utilizar sizers manualmente es:
– UNA LOCURA
● ¿Alguna solución?
– Utilizar aplicaciones de diseño de
pantallas con generación automática
de código Python y wxPython.
● wxGlade

● wxFormBuilder

● wxDesigner
wxFormBuilder
● Entorno WYSIWYG para diseño gráfico de interfaces
para wxWidgets.
● Posibilidad de generar código Python.
● Contiene muchos widgets.
● Trabajar con sizers en wxFormBuilder es muy fácil.
● http://wxformbuilder.org/
● Tutorial: wxFormBuilder en El Viaje del Navegante
Cosas que veremos otro día...

● Widgets más comunes.


● Menús.
● Widgets avanzados.
● MVC en wxPython.
● Imágenes.
● Impresión.
● Los controles Grid y Tree.
● ....y un largo etcétera.
Ejemplos completos de wxPython

● Interfaz gráfica de gestión de usuarios.

● Editor de texto.

● Combobox y paso de parámetros entre widgets.

● pyLorca, creación automática 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

Más 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 español
● PYTHON GUÍA DE REFERENCIA
– ALEX MARTELLI
– EDITORIAL O'REILLY
● PROGRAMACIÓN PYTHON 3
– MARK SUMMERFIELD
– EDITORIAL ADDISON WESLEY
● PYTHON, CREAR – MODIFICAR – REUTILIZAR
– JIM KNOWLTON
– EDITORIAL WROX
● LA GUÍA DEFINITIVA DE DJANGO
– ADRIAN HOLOVATY Y JACOB KAPLAN-MOSS
– EDITORIAL APRESS
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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy