Jump to content
YOUR-AD-HERE
HOSTING
TOOLS

Locked Curso Introductorio a Python con Interfaces graficas TK


Expermicid

Recommended Posts

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:

 

[LENGUAJE=python]from Tkinter import *[/LENGUAJE]

 

Tambien se puede escribir:

 

[LENGUAJE=python]import Tkinter[/LENGUAJE]

 

Pero comunmente se utiliza como la primera.

 

Creando un formulario (vacío)

 

Para crear los forms, primero importaremos la libreria Tkinter.

 

[LENGUAJE=python]from Tkinter import *[/LENGUAJE]

 

Y luego ponemos:

 

[LENGUAJE=python]ventana = Tk()[/LENGUAJE]

 

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.

 

This is the hidden content, please

 

Para finalizar debemos poner:

 

[LENGUAJE=python]ventana.mainloop()[/LENGUAJE]

 

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:

 

[LENGUAJE=python]from Tkinter import *[/LENGUAJE]

 

Creamos una ventana

 

[LENGUAJE=python]ventana = Tk()[/LENGUAJE]

 

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

 

[LENGUAJE=python]titulo= Label(parent, opcion1="valor", opcion2="valor"....)[/LENGUAJE]

 

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.

 

[LENGUAJE=python]holamundo = Label(ventana, text="¡Hola Mundo!", fg="cyan", bg="blue")[/LENGUAJE]

 

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.

 

This is the hidden content, please

 

Y para finalizar le ponemos:

 

[LENGUAJE=python]ventana.mainloop()[/LENGUAJE]

 

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:

 

[LENGUAJE=python]nombre = Button(ventana, texto del boton, comando de funcion, tamaño de ancho y/o alto)[/LENGUAJE]

 

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

 

[LENGUAJE=python]Button(... text="Aceptar" ...)[/LENGUAJE]

 

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:

 

[LENGUAJE=python]def nombre de la funcion():

codigo de la funcion[/LENGUAJE]

 

Y dentro de la declaracion pondriamos asi:

 

[LENGUAJE=python]Button(... command=nombre de la funcion ...)[/LENGUAJE]

 

Veamos un ejemplo:

 

[LENGUAJE=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()[/LENGUAJE]

 

Imagenes:

 

This is the hidden content, please

 

This is the hidden content, please

 

Textbox

 

La declaración del textbox es:

 

[LENGUAJE=python]el_nombre_de_nuestro_textbox = Entry(ventana, opcion1="valor" ...)[/LENGUAJE]

 

Implementemoslo:

 

This is the hidden content, please

 

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

Primero declaramos la variable:

 

[LENGUAJE=python]variable_string = StringVar()[/LENGUAJE]

 

Y luego nuestro textbox:

 

[LENGUAJE=python]el_nombre_de_nuestro_textbox = Entry(ventana, textvariable=variable_string)[/LENGUAJE]

 

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.

 

[LENGUAJE=python]variable_String.get()[/LENGUAJE]

 

CheckBox

 

La sintaxis para los checkbox es:

 

[LENGUAJE=python]nombre_de_mi_check = CheckButton(ventana, text="lo que sale al lado", opcion2="valor", ...)[/LENGUAJE]

 

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

 

Ejemplo:

 

[LENGUAJE=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()[/LENGUAJE]

 

This is the hidden content, please

 

This is the hidden content, please

 

Textarea y scrollbar

 

Primero, la sintaxis de un textarea:

 

[LENGUAJE=python] = Text(, height=h, width=w)[/LENGUAJE]

 

El sera la variable que defina el textarea, donde Text es el nombre del widget con el que identificamos, el 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:

 

[LENGUAJE=python] = Scrollbar(, command=.)[/LENGUAJE]

 

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, seria el nombre de la variable que usamos anterior mente y luego separado por un punto , puede ser X o Y.

 

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

 

[LENGUAJE=python].configure(yscrollcommand=.set)[/LENGUAJE]

 

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 (<):

 

[LENGUAJE=python].pack(side=LEFT)[/LENGUAJE]

 

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:

 

[LENGUAJE=python].pack(side=RIGHT, fill=Y)[/LENGUAJE]

 

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:

 

[LENGUAJE=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()[/LENGUAJE]

 

This is the hidden content, please

 

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

 

This is the hidden content, please

 

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

Edited by Expermicid
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.