Curso Introductorio a Python con Interfaces graficas TK

Iniciado por Expermicid, Enero 17, 2013, 02:23:06 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Tkinter es un binding de la biblioteca gráfica Tcl/Tk para el lenguaje de programación Python. Se considera un estándar para la interfaz gráfica de usuario (GUI) para Python.

Para aquellos usuarios de GNU/linux que por defecto no tengan instalado TKinter, tan sólo tienen que instalar el paquete "python-tk":

Ubuntu/Debian: "sudo apt-get install python-tk"

Fedora/red hat: "sudo yum install python-tk"

Activando los modulos de TK

Para activar los modulos de TK, se utiliza la siguiente linea:

Código: python
from Tkinter import *


Tambien se puede escribir:

Código: python
import Tkinter


Pero comunmente se utiliza como la primera.

Creando un formulario (vacío)

Para crear los forms, primero importaremos la libreria Tkinter.

Código: python
from Tkinter import *


Y luego ponemos:

Código: python
ventana = Tk()


En donde ventana es un nombre abstracto que podemos ponerle a eleccion.
Tk lo que hace es iniciar un objeto widget.
Y ya esta, ya tenemos una ventana funcional que podemos mover, redimensionar, cerrar, minimizar.



Para finalizar debemos poner:

Código: python
ventana.mainloop()


Lo que hacemos es finalizar el objeto antes iniciado. Mainloop es el encargado de manejar y manipular todos los eventos que ocurran durante el codigo.

Ejemplo Hola Mundo

Como en la mayoria de los lenguajes se empieza con el ejemplo comun de Hola Mundo, lo vamos a emplear aqui tambien :)

Importamos la libreria Tkinter:

Código: python
from Tkinter import *


Creamos una ventana

Código: python
ventana = Tk()


Ahora usaremos la clase label del tkinter que sirve para añadir un titulo a la ventana. El formato basico es:

Código: python
titulo= Label(parent, opcion1="valor", opcion2="valor"....)


Toda clase de Tkinter, debe tener un "parent", es decir, un "padre", o como lo quieran llamar, y se indica en el argumento "parent" del constructor. Los argumentos "opcion1", "opcion2", son otros datos para especificar bordes, colores, relleno.

Código: python
holamundo = Label(ventana, text="¡Hola Mundo!", fg="cyan", bg="blue")


La opción "fg" sirve para indicar el color del texto, y "bg" el color de fondo de la ventana.

Pero despues de esto, si notan no sale nada.
Porque después de crear cualquier objeto Tkinter, se debe de "posicionar", por así decirlo, en la ventana, para ello se puede utilizar el método "pack" o "grid".
Pack: hace un autoajuste y lo coloca donde el desea.
Grid: puedes elegir columnas, lineas, etc.



Y para finalizar le ponemos:

Código: python
ventana.mainloop()


Botones

Los buttons, sirven para efectuar una función.
Esa función se declara antes con def(): y despues se introduce una subfuncion en el button llamada command.

La sintaxis seria:

Código: python
nombre = Button(ventana, texto del boton, comando de funcion, tamaño de ancho y/o alto)


El texto del boton, es el tipico "label" que saldra en un boton, por ejemplo si queremos que el boton ponga "Aceptar" escribiremos:

Código: python
Button(... text="Aceptar" ...)


Para el comando de función, antes de nada, tenemos que crear la función que queremos con lambda o def.
Recordemos la sintaxis de una funcion:

Código: python
def nombre de la funcion():
     codigo de la funcion


Y dentro de la declaracion pondriamos asi:

Código: python
Button(... command=nombre de la funcion ...)


Veamos un ejemplo:

Código: python
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()


Imagenes:





Textbox

La declaración del textbox es:

Código: python
el_nombre_de_nuestro_textbox = Entry(ventana, opcion1="valor" ...)


Implementemoslo:



Tambien podemos usar una variable de String para almacenar el valor que se introduce en el textbox.
Primero declaramos la variable:

Código: python
variable_string = StringVar()


Y luego nuestro textbox:

Código: python
el_nombre_de_nuestro_textbox = Entry(ventana, textvariable=variable_string)


De esta manera, nuestro textbox cuando escribamos almacenara ese texto en la variable variable_string.
Para utilizar las variables de string de los TextBox, cuando empleemos ese contenido, tendremos que hacerlo incluyendo .get() al final.

Código: python
variable_String.get()


CheckBox

La sintaxis para los checkbox es:

Código: python
nombre_de_mi_check = CheckButton(ventana, text="lo que sale al lado", opcion2="valor", ...)


Analogamente como en el caso anterior podriamos crear una variable int para guardar el estado del checkbox.

Ejemplo:

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






Textarea y scrollbar

Primero, la sintaxis de un textarea:

Código: python
<nombre_del_textarea> = Text(<identificador>, height=h, width=w)


El <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, height=h es la altura de largo y width=w de ancho.

Con eso cumplimos los requisitos básicos del widget, pero tendriamos un problema, al añadir 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 usaremos un scrollbar, su sintaxis es:

Código: python
<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, <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.

Ahora tenemos de configurar al textarea indicandole que tiene un scrollbar preparado, ¿como lo hacemos? con la funcion configure:

Código: python
<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 señalara que el textarea se pondra a la izquierda (<):

Código: python
<nombre_del_textarea>.pack(side=LEFT)


donde nombre del textarea ponemos la variable, y como veis con pack indicamos la fijación de lugar y con side la posicion.

Y con el scrollbar, algo parecido:

Código: python
<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.

Veamos un Ejemplo:

Código: python
from Tkinter import *
ventana = Tk()
textarea = Text(ventana, height=20, width=40)
scroll = Scrollbar(ventana, command=textarea.yview)
textarea.configure(yscrollcommand=scroll.set)
textarea.pack(side=LEFT)
scroll.pack(side=RIGHT, fill=Y)
ventana.mainloop()




Para finalizar, un ejemplo que abarque varias cosas. :)



Espero que les haya gustado.

Creditos: Erik#
Tome un tutorial base de el y le agregue imagenes para que se vea mejor, entre otras cosas.

Saludos

Muy bueno brother, apenas como para hacerce con una idea acerca de TK

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta