Taller I Coreis Python 10112009
-
Upload
carlos-cardenas-fernandez -
Category
Technology
-
view
5.365 -
download
5
Transcript of Taller I Coreis Python 10112009
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