wxPython

USUARIA 2005

Facundo Batista

facundo@taniquetil.com.ar

www.taniquetil.com.ar

Arte gráfico: Diana Batista

Index

wxPython

Python

wxWidgets

¿Qué es wxPython?

Toolkit gráfico para Python

Construido alrededor del toolkit wxWidgets

wxWidgets: C++

WxPython: wrapper que permite utilizarlo desde Python

Multi-platforma

Windows, Linux, Unix, OS X.

Mantiene el look & feel de cada entorno

Usa controles y widgets nativos

Implementa widgets independientes de la plataforma

Ambos son proyectos maduros y bien establecidos

wxWidgets: 1992

wxPython: 1996

Python: Algunas características

Gratis Y Libre

Y Open Source, todo por el mismo precio: cero

Maduro (14 años FIXME)

Diseño elegante y robusto

Fácil de aprender

Se lee como pseudo-código

Extremadamente portable

Unix, Windows, Mac, BeOS, Win/CE

DOS, OS/2, Amiga... VMS, Cray

...

Python: Propiedades del lenguaje

Compila a bytecode interpretado

La compilación es implícita y automática

Tipado dinámico, polimorfismo

Sobrecarga de operadores

Multi-paradigma

Todo son objetos

Pero puede usarse de manera procedural

Módulos, clases, funciones

Manejo de excepciones

Tipos de datos de alto nivel

Enteros sin límites, strings, flotantes, complejos

Listas, diccionarios, conjuntos

Python: Productividad

Tiempo reducido de desarrollo

el código es 2 a 10 veces más corto que C, C++ o Java

Menos entrenamiento

El lenguaje es muy fácil de aprender

Mejor mantenimiento de los programas

El código es extremadamente legible

Jolt Productivity Award (FIXME: ver que año)

Por segunda vez (antes en el 2000)

Categoría: Languages and Development Tools

Enterprise-class

Frequentis TAPtools: Control de tráfico aéreo.

Industrial Light & Magic: Gestión de las granjas de renderizado.

NASA: Sistemas computarizados de diseño y fabricación.

Google: Administración de decenas de miles de servidores.

¿Qué es wxWidgets?

Framework gráfico Open Source para C++

Wrapper alrededor del toolkit nativo

Windows MFC

Linux (pro ejemplo, GTK)

Mac OS (¿Cocoa?)

Implementa solamente aquellos widgets que faltan en algunos toolkits

poEdit bajo GTK+ y Win98

La mejor combinación

wxPython:

Portabilidad y estructura de wxWidgets

Facilidad de uso y potencia de Python:

#include "wx-2.5/wx/wx.h"

class MyApp: public wxApp {

virtual bool OnInit();

};

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit() {

MyFrame *frame = new wxFrame( "Hello World");

frame->Show(TRUE);

SetTopWindow(frame);

return TRUE;

}

from wxPython.wx import *

app = wxApp()

frame = wxFrame(None, -1, "Hello World")

frame.Show(1)

app.MainLoop()

¡Gracias!

Facundo Batista

facundo@taniquetil.com.ar

www.taniquetil.com.ar

Decimal Structure: Finite numbers, Special values

Decimal Methods: as_tuple, quantize, to_eng_strings, to_integral, adjusted, same_quantum, normalize, compare, max and min, sqrt

Using Context: Structure of a Context, Getting the current context, Setting a new context, Standard contexts, DefaultContext

Context Methods: Standard arithmetic, Specific I, Specific II

Signals: What are Signals?, Dealing with Flags, Dealing with Traps, Clamped and DivisionByZero, Inexact and Rounded, InvalidOperation and Overflow, Subnormal and Underflow

Rounding: When rounding happens, Up & down, Ceiling & floor, Half up, down & even

Usage Cases: Do use Decimal: Financial, Do use Decimal: Easier life, Don't use Decimal: Speed / Accuracy, Don't use Decimal: Directly as Money

Needed if want to extend Decimal to trigonometry.

Inexact:

>>> getcontext()

Context(..., flags=[Rounded, Inexact], ...)

Rounded: This signal is used to detect loss of significant digits.

>>> getcontext()

Context(..., flags=[Rounded], ...)

Inexact:

>>> getcontext()

Context(..., flags=[Rounded, Inexact], ...)

Rounded: This signal is used to detect loss of significant digits.

>>> getcontext()

Context(..., flags=[Rounded], ...)

Inexact:

>>> getcontext()

Context(..., flags=[Rounded, Inexact], ...)

Rounded: This signal is used to detect loss of significant digits.

>>> getcontext()

Context(..., flags=[Rounded], ...)

Inexact:

>>> getcontext()

Context(..., flags=[Rounded, Inexact], ...)

Rounded: This signal is used to detect loss of significant digits.

>>> getcontext()

Context(..., flags=[Rounded], ...)

Inexact:

>>> getcontext()

Context(..., flags=[Rounded, Inexact], ...)

Rounded: This signal is used to detect loss of significant digits.

>>> getcontext()

Context(..., flags=[Rounded], ...)

Inexact:

>>> getcontext()

Context(..., flags=[Rounded, Inexact], ...)

Rounded: This signal is used to detect loss of significant digits.

>>> getcontext()

Context(..., flags=[Rounded], ...)

2005-03-06T16:13:33