Anda di halaman 1dari 10

Curso

de Python con interfaz grafic a


1.Introduccin
Me di cuenta de el lenguaje python complementandolo con TK (Tool Kit) se podria hacer cosas grandes, por eso, voy a ensearos de lo ms basico a crear juegos. Puede que no llegueis a hacer juegos como con PyGame, porque, TK, principalmente es un entorno grafico ms de texto, pero vereis que sera de gran utilidad.

2.Activando los modulos de TK


Para activar los modulos de TK, nosotros utilizaremos esto: Cdigo from Tkinter import *

3.Creando un formulario (vaco)


Para crear los forms, primero importaremos: Cdigo from Tkinter import * Despues, utilizaremos la funcin: Cdigo root = Tk() Que creara un identificador, y por ultimo, cerramos el identificar: Cdigo root.mainloop()

El resultado del cdigo total, sera: Cdigo from Tkinter import * root = Tk() root.mainloop() Cuando inicieis esto, vereis que ya tenemos nuestro formulario vaco.

4.Nuestra primera aplicacin.


Como siempre, en todos los lenguajes, la primera aplicacin es hola mundo, y ahora vereis como se crea un label, espero que se os quede, porque aparte de crear la aplicacin aprendemos lo basico sobre labels. Primero, debemos poner todo el cdigo que hemos aprendido al crear forms. Cdigo from Tkinter import * root = Tk() root.mainloop() Y ahora, como os dije antes, root sera importante, fijaros: Cdigo holamundo = Label(root, text="Hola Mundo!") Como veis, creamos el declarador llamado holamundo, que contiene un widget de caracter "LABEL", antes de nada, usaremos root para que el programa identifique esa funcion como tkinter, y luego, usamos una coma y ponemos text=, que sera la funcin que usaremos para introducir una variable, algun texto, etc... Pero despues de esto, si lo comprobais antes de pasar a este siguiente punto, vereis que no sale nada o os da error. Pues, para declarar este label en el form y ahora atentos, podreis utilizar dos formas, pack o grid, pack, hace un autoajuste y lo coloca donde el desea, pero con grid, puedes elegir columnas, lineas, situacin...

Nosotros usaremos grid para elegir columnas y lineas, y ahora llega el toque final: Cdigo holamundo.grid(row=1, column=1) Y ahora si juntamos todo: Cdigo from Tkinter import * root = Tk() holamundo = Label(root, text="Hola Mundo!") holamundo.grid(row=1, column=1) root.mainloop()

5.Empezamos con los buttons


Los widgets buttons, sirven para efectuar una funcin. Esa funcin se declara antes con def(): y despues se introduce una subfuncion en el button llamada command, pero eso lo veremos ms tarde en este fasciculo. Lo primero es la declaracin de sintaxis: Cdigo nombre = Button(root, texto del boton, comando de funcion, tamaño de ancho y/o alto) grid.nombre(linea, columna) Esta sintaxis es la que necesitaremos para crear un button, ahora, profundicaremos en cada una de estas partes. Primero, el texto del boton, es el tipico "label" que saldra en un boton, por ejemplo si queremos que el boton ponga "De acuerdo" escribiremos: Cdigo Button(... text="De acuerdo" ...) En ese de acuerdo, podemos poner lo que queramos. Ahora seguiremos con el comando de funcin, bueno, esto, antes de nada, tenemos que crear la funcin que queremos con lambda o def, nosotros usaremos def, bueno, la sintaxis de def es. En el nombre de la funcin, pondremos como queremos que se llame la funcin, en el ejemplo que haremos ms adelante se llamara holamundo y donde cdigo de funcin ponemos el codigo que queremos, en nuestro caso para el ejemplo final pondremos:

Cdigo holamundolbl = Label(root, text="Hola Mundo") holamundolbl.grid(row=2, column=1) Muy bien, una vez tenemos el nombre de la funcion y el cdigo, donde command=, pondremos: Cdigo Button(...command=holamundo...) Esto llamara a la funcin holamundo, y por ultimo, veremos el ancho o alto del button, nosotros por defecto siempre usaremos el width=20, que es el ancho de 20. Cdigo Button(...width=20)

Muy bien, ahora que ya tenemos nuestro button y sus partes, haremos el ejemplo: Cdigo def holamundo(): holamundolbl = Label(root, text="Hola Mundo") holamundolbl.grid(row=2, column=1) holamundo = Button(root, text="Activar Hola Mundo", command=holamundo, width=20) holamundo.grid(row=1, column=1) Muy bien, y ahora complementamos los modulos y funciones de formulario: Cdigo from Tkinter import * def holamundo(): holamundolbl = Label(root, text="Hola Mundo") holamundolbl.grid(row=2, column=1) root = Tk() holamundo = Button(root, text="Activar Hola Mundo",command=holamundo, width=20) holamundo.grid(row=1, column=1) root.mainloop()

Listo, lo probamos y et voila, button activado.

6.Utilizamos TextBox's
Los textbox's en Python principalmente, hasta ms adelante los usaremos con Strings, osea as, cadenas de texto. Antes que nada, tendriamos que declarar el nombre del textbox como variable de string, eso lo podemos hacer poniendo esto: Cdigo mi_variable_string = StringVar() De esta manera, mi_variable_string que seria el nombre de vuestra variable, sera identificada como String, ahora, vamos a la declaracin del textbox. Cdigo el_nombre_de_nuestro_textbox = Entry(root, textvariable=mi_variable_string) De esta manera, nuestro textbox cuando escribamos almacenara ese texto en la variable mi_variable_string. Para utilizar las variables de string de los TextBox, cuando empleemos ese contenido, tendremos que hacerlo incluyendo .get() al final, nuestro resultado quedaria as, imaginaos que ahora lo queremos mostrar por consola y no por grafica, quedaria algo as: Cdigo print mi_variable_string.get()

7.CheckBox & IntVar()


Bueno, despues de estar muerto varios meses (2) he decidido continuarlo y lo continuamos con el checkbox e introduciendo las variables numericas en Tk. Cuando comence con esto del PyTk habia un error que me mataba, no sabia construir variables numericas en Python, pero pensando un poco probe varias combinaciones IntegerVar(), VarInt(), VarInteger()... hasta que probe IntVar() y lo consegui, el resultado de una variable numerica: Cdigo

mi_int_var = IntVar() # Creando una variable numerica}

Y bien, volviendo al tema principal, hablaremos sobre los checkbox, para los que no sabes que es, son unos cuadrados de seleccin que se utilizan en formularios de contacto, supscripcin... Estos cuadrados a diferencia de los RadioButton (los veremos ms adelante) solo puede haber 1 clickeado. Bueno, la syntax del widget checkbutton es la siguiente: Cdigo check = CheckButton(root, text="Lo que saldra al lado", var=variable_que_usaremos) check.grid() Donde check seria el nombre de nuestro widget, CheckButton indicamos que sera un Cuadrado de seleccin, root es nuestro identificador, Lo que saldra al lado es lo que saldria al lado para informar que pasa o que seleccionas al clickar ese cuadrado y variable_que_usaremos es la variable con la que identificamos nuestro checkbutton. Un ejemplo sencillo seria este: Cdigo var = IntVar() check = Checkbutton(root, text="Hola mundo", variable=var) check.grid() Y ahora podriamos saber si ese cuadrado ha sido seleccionado haciendo un if: Cdigo def funcion_presionada_por_button(): if var.get(): print "El checkbutton fue seleccionado" else: print "El checkbutton no fue seleccionado" De esta manera le decimos que si la variable var del checkbutton contiene algo osea as una seleccion nos salga algo y por contra otra cosa, donde funcion_presionada_por_button es la funcion o mejor llamado el command que llamamos desde un button creado por nosotros.

Y ahora, os dejo un ejemplo total para que practiqueis y lo veais ms claro:

Cdigo from Tkinter import * def verificar(): if var.get(): print "El checkbutton fue seleccionado" else: print "El checkButton no fue seleccionado" root = Tk() var = IntVar() check = Checkbutton(root, text="Seleccionado/ No seleccionado", variable=var) cm = Button(root, text="Verificar", command=verificar, width=20) check.grid() cm.grid() root.mainloop()

8.Nuestra segunda aplicacin, Calculadora bsica


Y bueno, os dejo este cdigo con lo que hemos ido aprendiendo. Hay algunas cosas que olvide, son pequeas cosas que algunas di por sentadas y otras ni me acorde... Desde nuestro identificador podemos definir el titulo de nuestra ventana: Cdigo identificador.title('Nombre de la aplicacion') Si sigues el curso sabras que el identificador es root, y bueno, otra cosa es que las columnas y las linias (row, column) empiezan en 0,0 , osea as la row principal es 0 y la column principal es 0. Y bueno, aqui os dejo la aplicacin de aprendizaje: Cdigo from Tkinter import * def calc_sumar(): print a.get()+b.get() lblt = Label(root, text="Total: " + str(a.get()+b.get())) lblt.grid(row=3, column=0) def calc_restar():

print a.get()-b.get() lblt = Label(root, text="Total: " + str(a.get()-b.get())) lblt.grid(row=3, column=0) def calc_mult(): print a.get()*b.get() lblt = Label(root, text="Total: " + str(a.get()*b.get())) lblt.grid(row=3, column=0) def calc_div(): print a.get()/b.get() lblt = Label(root, text="Total: " + str(a.get()/b.get())) lblt.grid(row=3, column=0) root = Tk() root.title('PyCalk - Python/TK') a = IntVar() b = IntVar() atxt = Entry(root, textvariable=a,width=15) btxt = Entry(root, textvariable=b,width=15) cbs = Button(root, text="Sumar", command=calc_sumar,width=10) cbr = Button(root, text="Restar", command=calc_restar,width=10) cbm = Button(root, text="Multiplicar", command=calc_mult,width=15) cbd = Button(root, text="Dividir", command=calc_div,width=10) atxt.grid() btxt.grid() cbs.grid(row=0, column=1) cbr.grid(row=1, column=1) cbm.grid(row=2, column=0) cbd.grid(row=2, column=1) root.mainloop()

9.Textarea e incluimos los scrollbar


En esta leccin usaremos mucho la X y la Y, como ya sabreis mucho son las variables que sealan las coordenadas o las posiciones X = Horizontal, Y = Vertical. Bueno, vamos all... Primero, la sintaxis de un textarea, pues, es simple, como todos los widgets de las interfaces TK en Python: Cdigo <nombre_del_textarea> = Text(<identificador>, height=h, width=w)

Como veis, en <nombre_del_textarea> sera la variable que defina el textarea, donde Text es el nombre del widget con el que identificamos, el <identificador> es el identificador TK que declaramos al inicio, en el curso por defecto es root, height=h es la altura de largo y width=w de ancho, por defecto, en el curso usaremos h = 20, w = 40, y nos quedara algo as: Cdigo textarea = Text(root, height=20, width=40) Como veis cumplimos los requisitos bsicos del widget, pero tendriamos un problema, al aadir mucho contenido de texto, perdiriamos el hilo, pues no tenemos un objeto en todo caso un scrollbar que nos suba o nos baje para ver todo el texto, para eso como he mencionado varias veces anteriormente usaremos un scrollbar, su sintaxis es: Cdigo <nombre_del_scrollbar> = Scrollbar(<identificador>, command=<nombre_del_textarea>.<funcion_de_vista>) Donde nombre del scrollbar ponemos la variable que guarda nuestro widget, la palabra Scrollbar identifica como scrollbar nuestro objeto, el identificador es el identificador TK que declaramos anteriormente, en el curso por defecto es TK, <nombre_del_textarea> seria el nombre de la variable que usamos anterior mente y luego separado por un punto <funcion_de_vista>, puede ser X o Y, nostros, por defecto usaremos la Y, que es vertical, ejemplo: Cdigo scroll = Scrollbar(root, command=textarea.yview) Como veis, le llamamos scroll, lo identificamos como un scrollbar, usamos nuestro identificador tk que inicia los objetos que es "root", y luego como veis aadimos el nombre de nuestro textarea y le aadimos una vista horizontal con el yview, si quereis, cambiando y por x podeis conseguir una vista horizontal. Ahora tenemos de configurar al textarea indicandole que tiene un scrollbar preparado, como lo hacemos? con la funcion configure: Cdigo <nombre_del_textarea>.configure(yscrollcommand=<nombre_del_scrollbar>.set)

Donde nombre del textarea ponemos el nombre de la variable y donde nombre del scrollbar idem, pero con el del scrollbar... y por ultimo, declaramos las posiciones de inicio de nuestros objetos, primero el textarea, le indicamos que sealara que el textarea se pondra a la izquierda (<): Cdigo <nombre_del_textarea>.pack(side=LEFT) Donde nombre del textarea ponemos la variable, y como veis con pack indicamos la fijacin de lugar y con side la posicion. Y con el scrollbar, algo parecido: Cdigo <nombre_del_scrollbar>.pack(side=RIGHT, fill=Y) En el nombre del scrollbar el nombre de la variable, con el pack fijamos el lugar, con side indicamos que ira a la derecha del textarea y con fill indicamos si sera horizontal o vertical y por supuesto ponemos vertical (siempre tiene que estar en mayscula (Y,X)). Y aqui os dejo un ejemplo total: Cdigo from Tkinter import * root = Tk() textarea = Text(root, height=20, width=40) scroll = Scrollbar(root, command=textarea.yview) textarea.configure(yscrollcommand=scroll.set) textarea.pack(side=LEFT) scroll.pack(side=RIGHT, fill=Y) root.mainloop() Aqui se encuentra el tutorial original... http://foro.elhacker.net/scripting/python_curso_de_python_con_interfaces_graficas_tkt232514.0.html

Es mejor una mentira que te hace feliz, que una verdad que te amarga...

Anda mungkin juga menyukai