taller i coreis python 10112009

Download Taller I Coreis Python 10112009

If you can't read please download the document

Upload: carlos-cardenas-fernandez

Post on 16-Apr-2017

5.364 views

Category:

Technology


5 download

TRANSCRIPT

Diapositiva 1

Taller I
Python

Carlos Mauro Crdenas Fernndez
http://unimauro.blogspot.com
http://www.twitter.com/unimauro
[email protected]

Temario

Python

Python Bsico y Prctica

GUI TK, WX

Python 3.0

Python Sugar

Python

Algunos usuarios de Python

Algunas caractersticas

Gratis Y Libre

Y Open Source, todo por el mismo precio: cero

Maduro (+14 aos)

Diseo elegante y robusto

Pero evoluciona

Fcil de aprender

Se lee como pseudo-cdigo

Sintaxis sencilla

Extremadamente portable

Unix, Windows, Mac, BeOS, Win/CE

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

Inexact:

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

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

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

Propiedades del lenguaje

Compila a bytecode interpretado

La compilacin es implcita y automtica

Tipado dinmico, pero fuerte

Multi-paradigma

Todo son objetos

Pero puede usarse de manera procedural

Mdulos, clases, funciones, generadores

Viene con las baterias incluidas

Extensa biblioteca estndar

Clave en la productividad de Python

Inexact:

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

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

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

Ms propiedades

Manejo moderno de errores

Por excepciones

Muy til detalle de error

Tipos de datos de alto nivel

Enteros sin lmites, strings, flotantes, complejos

Listas, diccionarios, conjuntos

Intrprete interactivo

Clave en el bajo conteo de bugs

Acelera sorprendentemente el tiempo de desarrollo

Permite explorar, probar e incluso ver la documentacin

Inexact:

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

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

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

Las bateras includas

La Biblioteca Estndar ayuda con...

Servicios del sistema, fecha y hora, subprocesos, sockets, internacionalizacin y localizacin, base de datos, threads, formatos zip, bzip2, gzip, tar, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, XML-RPC (cliente y servidor), email, manejo asincrnico de sockets, clientes HTTP, FTP, SMTP, NNTP, POP3, IMAP4, servidores HTTP, SMTP, herramientas MIME, interfaz con el garbage collector, serializador y deserializador de objetos, debugger, profiler, random, curses, logging, compilador, decompilador, CSV, anlisis lexicogrfico, interfaz grfica incorporada, matemtica real y compleja, criptografa (MD5 y SHA), introspeccin, unit testing, doc testing, etc., etc...

Inexact:

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

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

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

Le ponemos ms pilas

Bases de datos

MySQL, PostgresSQL, MS SQL, Informix, DB/2, Sybase

Interfaces grficas

Qt, GTK, win32, wxWidgets, Cairo

Frameworks Web

Django, Turbogears, Zope, Plone, webpy

Y un montn ms de temas...

Biopython: Manejo de secuencias

PIL: para trabajar con imgenes

PyGame: juegos, presentaciones, grficos

SymPy: matemtica simblica

Numpy: calculos de alta performance

...

Inexact:

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

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

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

Corriendo e interpretando

Menos charla y ms accin

Python es interpretado

No hace falta compilar

Ciclo corto de pruebas

Y encima tenemos el Intrprete Interactivo

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

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

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

Python Bsico

Haciendo nmeros

Enteros>>> 2+24>>> (50 - 5*6) / 45>>> 7 / 32>>> 7 % 31>>> 23098742098472039 * 1208947392792516397223089453702821Floats>>> 3 * 3.75 / 1.57.5>>> 7 / 2.33.0434782608695654

Inexact:

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

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

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

Ms nmeros

Complejos>>> 2 + 3j(2+3j)>>> (2+3j * 17) ** (2+5j)(-0.91258832667469336-0.82498333629811516j)>>> (3-4j) ** 2.1(-10.797386682316887-27.308377455385106j)Recortando los decimales>>> int(12.3)12>>> round(2.7526)3.0>>> round(2.7526, 2)2.75

Inexact:

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

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

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

Usando la Calculadora Python

>>> 13.0/7>>> 13.0/7.>>> 13.0/7.0>>> 7%4>>> 8%2>>> 9/5

>>> 6*7>>> 7*7*7*7*7>>> 7**5>>> -7**6>>> -7**5>>> 8.75%.25

Booleanos

>>> input("Si o No")

>>> 1 or 1

>>> 1 or 0

>>> 1 ^ 1

>>> 1 ^ 0

>>> 0 ^ 1

Asignando Variables en Python

>>> a = 19>>> a * 6>>> a ** 9>>> b = 73>>> b + a>>> c = b * a>>> d = c/2.5

>>> mun1 =input("Ingrese un numero: ")>>> nun1*d>>> nun1 ** 0.5 >>> mun2 =input("Ingrese un numero: ")>>> e = nun1 * mun2

Librerias Matemticas

>>> 5**4>>> pow(5,4)>>> num3 = -150>>> abs(num3)>>> floor(18.7) Qu sucede?

>>> import math>>> math.floor(19.3635)>>> math.sqrt(100)>>> raiz = math.sqrt>>> raiz(121)>>> redondeo = math.floor>>> redondeo("Algo")

Trabajando con Cadenas :D

>>>"Hola a todos">>>'Hola a todos'>>>a = "Uno">>>b = "Dos">>>a + b>>>a, b>>>mvar='2'>>>mvar

>>>int(mvar)>>>mvar_num= in(mvar)>>>mvar_num>>>Qu Sale?

Cadenas

Comillas, apstrofos, triples>>> 'Una cadena es una secuencia de caracteres''Una cadena es una secuencia de caracteres'>>> "Ella dijo: 'si'""Ella dijo: 'si'">>> """Una linea... y la otra"""'Una linea\ny la otra'

Algunas operaciones>>> "Hola" + " mundo"'Hola mundo'>>> "Eco " * 4'Eco Eco Eco Eco '>>> " Hola mundo ".strip()'Hola mundo'>>> len("Hola mundo")10

Inexact:

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

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

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

Accediendo a las cadenas

Por posicin>>> saludo = 'Hola mundo'>>> saludo[0]'H'>>> saludo[3]'a'>>> saludo[-2]'d'

Rebanando>>> saludo[2:5]'la '>>> saludo[2:8]'la mun'>>> saludo[:4]'Hola'>>> saludo[-2:]'do'

Inexact:

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

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

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

Cadenas y Caracteres Especiales

>>>"Hi. What's the problem?">>>'Hi. What\'s the problem?'>>>"Romulo Dijo: "Y ha hice" ">>>"Romulo Dijo: \"Y ha hice\. Gracias Hijita " "

Concatenando Nmeros con Cadenas

>>> ns = 28>>> ns + 1>>> ns>>> print "Hoy!!!. La pasare con " + ns+ " Amigos">>> num1 = str(40)>>> print "Hoy!!!. La pasare con " + num1 + " Amigos... Somos">>> num2 = 4>>> print "El Rector Padilla(\"repite el plato\") con " +`num2` + " a favor"

Listas

Corchetes, varios tipos de elementos>>> a = ['harina', 100, 'huevos', 'manteca']>>> a['harina', 100, 'huevos', 'manteca']

Accedemos como cualquier secuencia>>> a[0]'harina'>>> a[-2:]['huevos', 'manteca']

Concatenamos, reemplazamos>>> a + ['oro', 9]['harina', 100, 'huevos', 'manteca', 'oro', 9]>>> a[0] = "sal">>> a['sal', 100, 'huevos', 'manteca']

Inexact:

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

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

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

Y dale con las listas

Pueden tener incluso otras listas>>> a['sal', 100, 'huevos', 'manteca']>>> a[1] = ["Hola", 7]>>> a['sal', ['Hola', 7], 'huevos', 'manteca']

Borramos elementos>>> del a[-1]>>> a['sal', ['Hola', 7], 'huevos']

Tenemos otros mtodos>>> a.index(huevos)2>>> a.sort()>>> a[['Hola', 7], 'huevos', 'sal']

Inexact:

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

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

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

Conjuntos

Definimos con set()>>> juego = set("typus pocus")>>> juegoset([' ', 'c', 'o', 'p', 's', 'u', 't', 'y'])>>> hechizo = set(["h", "o", "c", "u", "s", " "])>>> hechizo.update(set("pocus"))>>> hechizoset([' ', 'c', 'h', 'o', 'p', 's', 'u'])

Operamos>>> hechizo - juegoset(['h'])>>> hechizo & juegoset([' ', 'c', 'o', 'p', 's', 'u'])>>> hechizo.remove("h")>>> hechizo.add("Merlin")>>> hechizoset([' ', 'c', 'Merlin', 'o', 'p', 's', 'u'])

Inexact:

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

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

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

Secuencias y Tuplas

familia =['ma','pa','tio','abue','herm1','herm2']familia[2]familia[-2]semana =['lun','mar','mier','jue','vie','sab','dom']

Extraccin de Partes de una Secuencia

ejemplo=[0,1,2,3,4,5,6,7,8,9]ejemplo[2:6]ejemplo[-1:-6]ejemplo[:8]ejemplo[:]ejemplo[2:6:8]ejemplo[9:2:-3]ejemplo[::-5]

Editando secuencias

>>> [7,4,5]+[78,45,9,5]>>> 'curso' + 'python'>>> [7,4,5] + 'python'Qu Sucede?

>>> 'curso'*5>>> [18]*7>>> x1 = 'esternocleudomastoideo'>>> 'no' in x1

Ms Listas!!!

familia =['ma','pa','tio','abue','herm1','herm2']>>>'ma' in familia>>>len(familia)>>>max(familia)>>>min(familia)>>>numeros =[156,635,0.5,56,895, 98,1,-77]>>>numeros[4]=78>>>list('Curso de Python')>>>nom= list('Curso de Python')

>>> del numeros[4]>>> lista1 = list('VamosBien')>>> lista2 = list('creo')>>> lista1 >>> lista2>>> lista1[5:]=list('...Anda!!')>>> lista2[2:2]=[25,16,58,63]>>> lista1[1:8]=[]

Mtodos de Listas, Cadenas

>>>cuadrado=[10,10,30]>>>cuadrado>>>cuadrado.append(41)>>>cuadrado.count(10)>>>triangulo=[50,30,40]>>>triangulo.extend(cuadrado)>>>triangulo

Ordenamientos

>>>nuevo=[12,3,2,65,55,663,12,5,5]>>>nuevo.sort()>>>sorted('Palabras de un Diario')>>>entradas ="Holas %s , tu edad es %d">>>var=('Jackson', 50)>>>print entradas % var>>>noticia="El Astro Michael muri a los 50 aos">>>noticia.find('Michael')

Agregando y Formateando

>>> familia =['ma','pa','tio','abue','herm1','herm2']>>> invitamos='herm3'>>> glue.join(familia)>>> oracion="universidad NACIONAL of ingenieria">>> oracion.lower()>>> oracion.replace('of','de')

Jugando con Diccionarios

>>> libros={'fisica':'ciencia','mate1':'ciencia','odisea':'literatura'}>>> libros['fisica']>>> libros['odisea']>>> libros.clear()>>> alumnos={'alum1':'3', 'alum2':'5'}>>> asistencia=alumnos.copy()>>> alumnos.haaas_key('alum1')

Diccionarios

Definimos con llaves>>> dias = {"enero": 31, "junio": 30, "julio": 30}>>> dias{'julio': 30, 'enero': 31, 'junio': 30}>>> dias["enero"]31>>> dias["agosto"] = 31>>> dias["julio"] = 31>>> dias{'julio': 31, 'enero': 31, 'junio': 30, 'agosto': 31}>>> cualquiercosa = {34: [2,3], (2, 3): {3: 4}}

Borrando>>> del dias["julio"]>>> dias{'enero': 31, 'junio': 30, 'agosto': 31}

Inexact:

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

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

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

Ms diccionarios

Viendo qu hay>>> "marzo" in diasFalse>>> dias.keys()['enero', 'junio', 'agosto']>>> dias.values()[31, 30, 31]Otros mtodos>>> dias.get("agosto", "No tenemos ese mes")31>>> dias.get("mayo", "No tenemos ese mes")'No tenemos ese mes'>>> dias.pop("agosto")31>>> dias{'enero': 31, 'junio': 30}

Inexact:

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

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

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

if else elif#001.pyanimal=raw_input("Escribe en nombre de un animal de casa: ")if animal=="perro":print 'Es un animal'elif animal=="gato":print 'Es un animal'elif animal=="canario":print "Es un animal"elseprint "No lo es"

Sentencias de Control Anidadasaccion1="Correr"accion2="Pararif accion1=="Correr":if accion2=="Parar":print "Avanzo 2 espacios"elif:print "Sigue avanzando"else:print "Permanece parado"

Comparaciones>>> 9>> 9>> 9!=10>>> one = [21,22,23]>>> two = ["sol","luna"]>>> astro ="sol">>> astro in two>>> 's' in astro>>> three = one>>> one is three=

==

!=

and y or>>> "perro" < "gato">>> num1 = "5">>> if num1 > 3 and num1 < 10:print " Claro que lo es :D ">>> num2 = int(raw_input("Nuevo Numero: "))>>> if num2 > 3 or num2 < 10:print " Claro que lo es :D "print num2

for and whileRepeticiones o Loop>>> >>> b = 1>>> while b >> cocina=["olla","sarten","cocina","tazon"]>>> cocina>>> for instrumento in cocina:print "Yo tengo en mi cocina 1: "+ instrumento

for and while>>> alumnos={'Alumno1'=19.'Alumno2'=21,'Alumno3'=22}>>> alumnos>>> for edad in alumnos:print edad >>> for edad in alumnos:print edad, alumnos[edad]

For For>>> compras=['fugu', 'ramen', 'sake', 'shiitake mushrooms', 'soy sauce', 'wasabi']>>> prices={'fugu':100.0, 'ramen':5.0, 'sake':45.0, 'shiitake mushrooms':3.5,'soy sauce':7.50, 'wasabi':10.0}>>> total=0.00>>> for item in compras:... total+= prices[item]>>> total

Repeticiones infinitas y el Break>>> while 1:name = raw_input("Escribe tu Codigo : ")if name == "Quit": break>>> while 1:name = raw_input("Escribe tu Codigo : ")opcion = raw_input("Para Continuar presione \"S\" y Salir \"N\" : ")if opcion == "S": continueelse:break

Funciones

Estructura bsica>>> def alcuadrado(n):... res = n ** 2... return res...>>> alcuadrado(3)9

Las funciones son objetos>>> alcuadrado

>>> f = alcuadrado>>> f(5)25

Inexact:

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

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

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

Tengo mucha flexibilidad con los argumentos

>>> def func(a, b=0, c=7):... return a, b, c...

>>> func(1)(1, 0, 7)>>> func(1, 3)(1, 3, 7)>>> func(1, 3, 9)(1, 3, 9)>>> func(1, c=9)(1, 0, 9)>>> func(b=2, a=-3)(-3, 2, 7)

Inexact:

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

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

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

Funciones por Defectoabs

help

len

max

min

range

round

>>> abs(-3)>>> help([])>>> len("hello")>>> max(3, 5)>>> min(3, 4)>>> range(1,6)>>> round(10.2756, 2)

Funciones def:>>> def cadena(y):return y+'Es una cadena'>>> print cadena('Hola')>>> print cadena('Bien')>>> def cubo(x):return math.pow(x,3)>>> print cubo(10)

Parametros por Defecto>>> def nombres(nombre, apepa,apema):print "%s %s %s" % (nombre, apepa,apema)>>> def nombres(nombre='NN', apepa='NN',apema='NN'):print "%s %s %s" % (nombre, apepa,apema)

Enviando Parametros Mltiples>>> def listas(*algo):print algo>>> listas('frutas')>>> listas('uva','fresa','pia','mango','pera')>>> def portafolio(codigo, *cursos):print codigoprint cursos>>> portafolio('20090001','MA100','MA101','MA102')

Diccionarios como Parametros>>> def carta(**listado):print listado>>> carta(chifa=7,pollo=9,parrillada=8)>>> def recibos(tipo,*responsable,**montos):print tipoprint responsableprint montos>>> recibos('impuestos', 'sunat', 'municipalidad', igv=19, autovaluo=4 )

Tuplas como Parametros>>> def calificacion(a,b,c):if a+b+c="10":return 'Buena Nota' else:return 'desparobado'>>> puntos=(5,5,0)>>> calificacion(*puntos)>>> def familia(**habi):print habi>>> padres={'mama'=45, 'papa'=48}>>> familia(**padres)

Mas listas

>>> l1=['host=local','id=user','pass=word','db=data']>>> s=";".join(li)>>> s>>> s.split(";")>>> s.split(";",1)

Suceden cuando algo se escapa de lo normal>>> 14 / 27>>> 14 / 0Traceback (most recent call last): File "", line 1, in ZeroDivisionError: integer division or modulo by zero

Podemos capturarlas>>> try:... print 14 / 0... except ZeroDivisionError:... print "error!"... error!

Inexact:

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

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

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

Es muy verstiltry: Ac va el bloque de cdigo que queremos supervisar

except: Atrapa todo, o slo lo que se le especifique

else: Si no hubo una excepcin, se ejecuta esto

finally: Lo que esta ac se ejecuta siempre

Se pueden combinar de cualquier manera

Y podemos generar excepciones>>> raise ValueError("Aca contamos que pas")Traceback (most recent call last): File "", line 1, in ValueError: Aca contamos que pas

Inexact:

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

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

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

Programacin Orientada a Objetos >>> class clasePython:ojos="negros"edad="21"def thisMethod(self):return 'Hey eres t>>> clasePython>>> claseObject=clasePython()>>> claseObject.edad>>> claseObject.ojos>>> claseObject.thisMethod()

Clases

Armando una clase>>> class MiClase:... x = 3... def f(self):... return 'Hola mundo'...>>> c = MiClase()>>> c.x3>>> c.f()'Hola mundo

Heredando>>> class MiClase(ClasePadre):>>> class MiClase(ClasePadre, ClaseTio):

Inexact:

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

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

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

Python: Clases y Objetos

Python est completamente orientado a

objetos: puede definir sus propias clases,heredar de las que usted defina o de lasincorporadas en el lenguaje, e instanciar lasclases que haya definido. En Python las clases se definen mediante lapalabra reservada class seguida del nombrede la clase, dos puntos (:) y a continuacin,indentado, el cuerpo de la clase.

Las clases de Python no tienen constructores o destructores explcitos. Las clases de Python tienen algo similar a un constructor: el mtodo __init__.

Clase Imaginaria

#include int main(int argc, char **argv) { FILE *in, *out; int c; in = fopen("input.txt", "r"); out = fopen("output.txt", "w"); while ((c = fgetc(in)) != EOF) { fputc(c, out); } fclose(out); fclose(in);}

Copia de archivo en Python

in=open("input.txt")out=open("output.txt", "w")out.writelines(in)

Importando Mas Mdulos Creados Por Nosotros#Nueva Ventana#testmodulos.pydef testmod():print "Este es un Test"

En la Terminal >>> import testmodulos>>> testmodulos.testmod()

Recargando Mdulos#Nueva Ventana#modulomio.pydef testmod():print "Este es un TestEn la Terminal >>> import modulomio>>> holas= modulomio.testmod()#Nueva Ventana#modulomio.pydef testmod():print "Este es un NUEVO MODULOSEn la Terminal >>> import modulomio>>> holas= modulomio.testmod()>>> reload(modulomio)

Informacion de los Mdulos>>> import math>>> math.sqrt(100)>>> dir(math)>>> import time>>> dir(math)>>> help(math)>>> math.__doc__

Modulo de datetime >>> from datetime import datetime>>> the_time = datetime.now()>>> the_time.ctime()

Nuevos Mdulos

>>> import operator>>> reduce(operator.__mul__,[1,2,3,4,5])>>> from apihelper import info>>> li=()>>> info(li)

Nuevos Mdulos

>>> dir()

>>> dir(__builtins__)

>>> import urllib2

>>> dir(urllib2)

>>> dir(urllib2.bisect)

Ir al PathBrowser

>>> import inspect

>>> dir(inspect)

>>> inspect.getsource(inspect.getsource)

>>> print _

>>> see(inspect.getsource)

>>> see(urllib2.urlopen)

Trabajando con Archivos>>> fob =open('c:/python26/algo.txt','w')>>> fob.write('Mi primer Archivo')>>> fob.writelines('Mi primer Archivo')>>> fob.close()>>> fob =open('c:/python26/algo.txt','r')>>> fob.read(2)>>> fob.read()>>> fob.close()

Leiendo y Escribiendo>>> fob =open('c:/python26/leer.txt','r')>>> print fob.readline()>>> print fob.readlines()>>> fob.close()>>> fob =open('c:/python26/leer.txt','w')>>> fob.write('Holas AQUI\n')

Escribiendo Lneas>>> fob =open('c:/python26/test.txt','r')>>> linea = fob.readlines()>>> linea>>> fob.close()>>> linea[2]="Mirando Mirando">>> linea

Simulador de Nmerosimport randomrandom.seed(100)for roll in xrange(10):print random.randint(1, 6)print "Re-seededrandom.seed(100)for roll in xrange(10):print random.randint(1, 6)

Tinker

Widgets en TkinterWidget ->Descripcin

Button ->Botones

Canvas -> Area para Dibujos y Grficos

Checkbutton -> Una Caja clickeable

Entry -> Entrada Simple de Texto

Frame -> Un Contenedor de Widget

Label -> Etiqueta para colocar texto dentro de la Ventana

Listbox -> Una Lista desplegable

Menu -> Un Menu Desplegable

Message -> Un Mensaje de Alerta con texto

Menubutton -> Botn dentro del Menu

Text A multiline -> Texto de multiples lneas

TopLevel -> Una Ventana Adicional

01Tkinter.pyfrom Tkinter import *window = Tk()label = Label(window, text="La Primera Etiqueta.")label.pack()

02Tkinter.pyfrom Tkinter import *import timewindow = Tk()label = Label(window, text="Primera Etiqueta.")label.pack()time.sleep(2)label.config(text="Segunda Etiqueta.")

Tipos en TkinterTipos Inmutables -> Tipos Mutables en Tkinterint IntVar

string StringVar

bool BooleanVar

double DoubleVar

03Tkinter.py DATAfrom Tkinter import *window = Tk()data = StringVar()data.set(Mostrando la Data :D ")label = Label(window, textvariable=data)label.pack()window.mainloop()

04Tkinter.py Framesfrom Tkinter import *window = Tk()frame = Frame(window)frame.pack()first = Label(frame, text="First label")first.pack()second = Label(frame, text="Second label")second.pack()third = Label(frame, text="Third label")third.pack()window.mainloop()

05Tinkter.py Entrada de Textofrom Tkinter import *window = Tk()frame = Frame(window)frame.pack()var = StringVar()label = Label(frame, textvariable=var)label.pack()entry = Entry(frame, textvariable=var)entry.pack()window.mainloop()

06Tinkter.py Modelo, Vista y Controladorfrom Tkinter import *#Controladordef click(): counter.set(counter.get() + 1)if __name__ == '__main__' : window = Tk()# Modelo counter = IntVar() counter.set(0)# Vista frame = Frame(window) frame.pack() button = Button(frame, text="Click", command=click) button.pack() label = Label(frame, textvariable=counter) label.pack() window.mainloop()

07Tinkter.py Estilosfrom Tkinter import *window = Tk()button = Button(window, text=Holitas", font=("Courier", 14, "bold italic"))button.pack()window.mainloop()

08Tinkter.py Coloresfrom Tkinter import *

window = Tk()

button = Label(window, text=VERDES ", bg="green", fg="white")

button.pack()

window.mainloop()

09Tinkter.py Layoutfrom Tkinter import *window = Tk()frame = Frame(window)frame.pack()label = Label(frame, text="Nombre")label.pack(side="left")entry = Entry(frame)entry.pack(side="left")window.mainloop()

10Tinkter.py Grid de Layoutfrom Tkinter import *window = Tk()frame = Frame(window)frame.pack()label = Label(frame, text="Nombre:")label.grid(row=0, column=0)label = Label(frame, text="Apellido:")label.grid(row=1, column=0)entry = Entry(frame)entry.grid(row=0, column=1)entry1 = Entry(frame)entry1.grid(row=1, column=1)window.mainloop()

Parametros del GridParameter Description

row -> Fila, comienza en 0.

column -> Columna, comienza en 0.

rowspan -> El nmero de filas que ocupa, por defecto 1

columnspan -> El nmero de columnas que ocupa por defecto es 0

11Tinkter.py Textfrom Tkinter import *def cross(text): text.insert(INSERT, 'X' )

window = Tk()frame = Frame(window)frame.pack()text = Text(frame, height=3, width=10)text.pack()button = Button(frame, text="Agregar", command=lambda: cross(text))button.pack()window.mainloop()

12Tinkter.py CheckButtonfrom Tkinter import *window = Tk()frame = Frame(window)frame.pack()red = IntVar()green = IntVar()blue = IntVar()for (name, var) in (('R' , red), ('G' , green), ('B' , blue)): check = Checkbutton(frame, text=name, variable=var) check.pack(side='left' )def recolor(widget, r, g, b): color = '#' for var in (r, g, b): color += 'FF' if var.get() else '00' widget.config(bg=color)label = Label(frame, text='[ ]' )button = Button(frame, text='Actualizar' ,command=lambda: recolor(label, red, green, blue))button.pack(side='left' )label.pack(side='left' )window.mainloop()

12Tinkter.py Menu 01from Tkinter import *import tkFileDialog as dialogdef save(root, text): data = text.get('0.0' , END) filename = dialog.asksaveasfilename( parent=root, filetypes=[('Text' , '*.txt' )], title='Save as...' ) writer = open(filename, 'w' ) writer.write(data) writer.close()def quit(root): root.destroy()

window = Tk()text = Text(window)text.pack()menubar = Menu(window)filemenu = Menu(menubar)filemenu.add_command(label='Save' , command=lambda : save(window, text))filemenu.add_command(label='Quit' , command=lambda : quit(window))menubar.add_cascade(label = 'File' , menu=filemenu)window.config(menu=menubar)window.mainloop()

12Tinkter.py Menu 02window = Tk()text = Text(window)text.pack()menubar = Menu(window)filemenu = Menu(menubar)filemenu.add_command(label=Guardar' , command=lambda : save(window, text))filemenu.add_command(label=Salir' , command=lambda : quit(window))menubar.add_cascade(label = Archivo' , menu=filemenu)window.config(menu=menubar)window.mainloop()

13Tinkter.py GUI con POO 01from Tkinter import *class Counter: '''GUI con Objetos.''' def __init__(self, parent): '''Creando un GUI.''' # Framework. self.parent = parent self.frame = Frame(parent) self.frame.pack()

13Tinkter.py GUI con POO 02# Modelo. self.state = IntVar() self.state.set(1) # Mostrando una Etiqueta que cambiar. self.label = Label(self.frame, textvariable=self.state) self.label.pack() # Botones de la Aplicacin. self.up = Button(self.frame, text='mas' , command=self.upClick) self.up.pack(side='left' ) self.up = Button(self.frame, text='menos' , command=self.downClick) self.up.pack(side='left' ) self.right = Button(self.frame, text='Salir' , command=self.quitClick) self.right.pack(side='left' )

13Tinkter.py GUI con POO 03 # Controladores def upClick(self): '''Llamada al click en ' mas' .''' self.state.set(self.state.get() + 1) def downClick(self): '''Llamada al click en ' menos'.''' self.state.set(self.state.get() - 1) def quitClick(self): '''Llamada al click en ' Salir'.''' self.parent.destroy() if __name__ == '__main__' : window = Tk() myapp = Counter(window) window.mainloop()

WxPython

01WxPython.py > Una Ventanaimport wxclass wxpython(wx.Frame):def __init__ (self,parent,id):wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200))if __name__ == '__main__':app=wx.PySimpleApp()frame=wxpython(parent=None,id=-1)frame.Show()app.MainLoop()

02WxPython.py > Un Bottonimport wxclass wxpython(wx.Frame):def __init__ (self,parent,id):wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200))panel=wx.Panel(self)button=wx.Button(panel,label="exit",pos=(130,10),size=(60,60))self.Bind(wx.EVT_BUTTON,self.closebutton,button)self.Bind(wx.EVT_CLOSE, self.closewindows)def closebutton(self,event):self.Close(True)def closewindows(self,event):self.Destroy()if __name__ == '__main__':app=wx.PySimpleApp()frame=wxpython(parent=None,id=-1)frame.Show()app.MainLoop()

03WxPython.py > Un Menuimport wxclass wxpython(wx.Frame):def __init__ (self,parent,id):wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200))panel=wx.Panel(self)status=self.CreateStatusBar()menubar=wx.MenuBar()uno=wx.Menu()dos=wx.Menu()uno.Append(wx.NewId(),"Nuevo Archivo","Esto son los Archivos")uno.Append(wx.NewId(),"Abrir...", "Abrir el Archivo")menubar.Append(uno,"Archivo")menubar.Append(dos,"Editar")self.SetMenuBar(menubar)

04WxPython.py > Ventana de Dilogoimport wxclass wxpython(wx.Frame):def __init__ (self,parent,id):wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200))panel=wx.Panel(self)

box=wx.MessageDialog(None,'Que paso','Alerta',wx.YES_NO)answer=box.ShowModal()box.Destroy()if __name__ == '__main__':app=wx.PySimpleApp()frame=wxpython(parent=None,id=-1)frame.Show()app.MainLoop()

05WxPython.py > TextEntryDialogimport wxclass wxpython(wx.Frame): def __init__ (self,parent,id): wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200)) panel=wx.Panel(self) box=wx.TextEntryDialog(None,"Nombre","Titulo","Escriba su Nombre") if box.ShowModal()== wx.ID_OK: answer=box.GetValue()if __name__ == '__main__': app=wx.PySimpleApp() frame=wxpython(parent=None,id=-1) frame.Show() app.MainLoop()

06WxPython.py > SingleChoiceDialogimport wxclass wxpython(wx.Frame): def __init__ (self,parent,id): wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200)) panel=wx.Panel(self)

box=wx.SingleChoiceDialog(None, 'Cuales son tus Curso','Preguntas',['Matematica','Fisica','Quimica']) if box.ShowModal()== wx.ID_OK: answer=box.GetStringSelection()

07WxPython.py > StaticTextimport wxclass wxpython(wx.Frame): def __init__ (self,parent,id): wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200)) panel=wx.Panel(self)

wx.StaticText(panel,-1,"Esto es un Texto",(10,10)) custom=wx.StaticText(panel,-1,"Esto es una Personalizacin",(10,30),(260,-1),wx.ALIGN_CENTER) custom.SetForegroundColour('yellow') custom.SetBackgroundColour('red')

08WxPython.py > TextEntry & StaticText import wxclass wxpython(wx.Frame): def __init__ (self,parent,id): wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200)) panel=wx.Panel(self)

test=wx.TextEntryDialog(None,"Holitas",'title','ingresa tu nombre') if test.ShowModal()==wx.ID_OK: applica=test.GetValue()

wx.StaticText(panel, -1,applica,(10,10))

08WxPython.py > Botones con Grficosimport wxclass wxpython(wx.Frame): def __init__ (self,parent,id): wx.Frame.__init__(self,parent,id,'Nueva Ventana', size=(300,200)) panel=wx.Panel(self)

pic=wx.Image("tesis017.bmp", wx.BITMAP_TYPE_BMP).ConvertToBitmap() self.button=wx.BitmapButton(panel,-1,pic,pos=(10,10)) self.Bind(wx.EVT_BUTTON, self.doMe, self.button) self.button.SetDefault()

def doMe(self,event): self.Destroy()

Python 3.0

La nueva funcin print()

>>>fid = open("log.txt", "w")>>>print>>fid, "log text"

>>>print>>sys.stderr, "Un error al Abrir"

>>>fid = open("log.txt", "r")>>>print("log.txt", file=fid)

>>>print("Foo", "Bar", sep="%")>>>Foo%Bar

Un bit a bytes

>>>b = (b'\xc3\x9f\x65\x74\x61')>>>print(b)

>>>b = bytes('\xc3\x9f\x65\x74\x61', 'iso-8859-1')>>>print(b)

>>>b'hello' b' world'

>>>b'\xc3\x9f\x65\x74\x61'.decode()

>>>data = open('dat.txt', 'rb').read() >>>print(data)

Cadenas

>>>csar = ["author", "consultant"]>>>print(csar)

>>>repr('')

>>>repr('')

>>>"I love {0}, {1}, and {2}".format("eggs", "bacon", "sausage")>>>"I love {a}, {b}, and {c}".format(a="eggs", b="bacon", c="sausage")>>>"I love {0}, {1}, and {param}".format("eggs", "bacon", param="sausage")

>>>"{{0}}".format("can't see me")

>>>print(format(10.0, "7.3g"))

Diccionarios

>>>d = {1:"dead", 2:"parrot"}>>>print(d.items())

>>>1 in d # test for membership

>>>for values in d.items():... print(values) ...

>>>keys = list(d.keys())>>>print(keys)

Python 3 PEPs

* PEP 318: Decorators for Functions and Methods * PEP 3107: Function Annotations * PEP 3129: Class Decorators * PEP 3127: Integer Literal Support and Syntax * PEP 3115: Metaclasses in Python 3000 * PEP 3119: Introducing Abstract Base Classes * PEP 3141: A Type Hierarchy for Numbers * PEP 3109: Raising Exceptions in Python 3000 * PEP 3110: Catching Exceptions in Python 3000 * PEP 3102: Keyword-Only Arguments

SUGAR

Servidores para Descarga

U.S.A. master http://download.sugarlabs.org/soas/releases/soas-strawberry.iso

Europe mirror

http://ftp.snt.utwente.nl/pub/software/sugarlabs/soas/releases/soas-strawberry.iso

Netherlands mirror http://ftp.nluug.nl/pub/os/Linux/distr/Sugar/soas/releases/soas-strawberry.iso

Proceso de Instalacin en Windows

Descargar el liveusb-creator http://fedorahosted.org/liveusb-creator/

Usar un USB con por lo menos 1gb de espacio.

Renombrar el Volumen del USB a: FEDORA

Ejecutar el liveusb-creator

Seleccionar el iso de Sugar on a Stick (Strawberry) del menu derecho de la ventana de liveusb-creator

Configurar el Persistent Storage, el tamao del espacio a usar en el USB.

Seleccionar el USB a usar. Y Click en: Create Live USB

Usando USBLive

DESAFIOS

BIBLIOGRAFA

Bibliografa

Bibliografa

Carlos Mauro Crdenas Fernndez
http://unimauro.blogspot.com
http://www.twitter.com/unimauro
[email protected]

Universidad Nacional de IngenieraI COREIS Lima 2009

I COREIS LIMA