comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Curso Introductorio a Python con Interfaces graficas TK

  • 1 Respuestas
  • 6601 Vistas

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

Desconectado Expermicid

  • *
  • Underc0der
  • Mensajes: 457
  • Actividad:
    0%
  • Reputación 0
  • _-Expermicid-_
    • Ver Perfil
  • Skype: expermicid.xd
« en: Enero 17, 2013, 02:23:06 pm »
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
  1. from Tkinter import *

Tambien se puede escribir:

Código: Python
  1. 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
  1. from Tkinter import *

Y luego ponemos:

Código: Python
  1. 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
  1. 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
  1. from Tkinter import *

Creamos una ventana

Código: Python
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. def nombre de la funcion():
  2.      codigo de la funcion

Y dentro de la declaracion pondriamos asi:

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

Veamos un ejemplo:

Código: Python
  1. from Tkinter import *
  2. def holamundo():
  3.    holamundolbl = Label(root, text="Hola Mundo")
  4.    holamundolbl.grid(row=2, column=1)
  5. root = Tk()
  6. holamundo = Button(root, text="Activar Hola Mundo",command=holamundo, width=20)
  7. holamundo.grid(row=1, column=1)
  8. root.mainloop()

Imagenes:





Textbox

La declaración del textbox es:

Código: Python
  1. 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
  1. variable_string = StringVar()

Y luego nuestro textbox:

Código: Python
  1. 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
  1. variable_String.get()

CheckBox

La sintaxis para los checkbox es:

Código: Python
  1. 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
  1. from Tkinter import *
  2. def verificar():
  3.         if variable.get():
  4.                 print "El checkbutton fue seleccionado"
  5.         else:
  6.                 print "El checkButton no fue seleccionado"    
  7. ventana = Tk()
  8. variable = IntVar()
  9. check = Checkbutton(ventana, text="Seleccionado/No seleccionado", var=variable)
  10. cm = Button(ventana, text="Verificar", command=verificar, width=20)
  11. check.grid()
  12. cm.grid()
  13. ventana.mainloop()





Textarea y scrollbar

Primero, la sintaxis de un textarea:

Código: Python
  1. <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
  1. <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
  1. <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
  1. <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
  1. <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
  1. from Tkinter import *
  2. ventana = Tk()
  3. textarea = Text(ventana, height=20, width=40)
  4. scroll = Scrollbar(ventana, command=textarea.yview)
  5. textarea.configure(yscrollcommand=scroll.set)
  6. textarea.pack(side=LEFT)
  7. scroll.pack(side=RIGHT, fill=Y)
  8. 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

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #1 en: Enero 18, 2013, 02:32:54 am »
Muy bueno brother, apenas como para hacerce con una idea acerca de TK

Saludos!






No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[Código] Yardas a metros - Metros a yardas [Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1338
Último mensaje Mayo 29, 2011, 01:27:34 am
por LucaSthefano
[Código] Entero / No Entero [Ejercicio - Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1298
Último mensaje Mayo 29, 2011, 01:24:09 am
por LucaSthefano
Python Trojan - By "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 1
Vistas: 1969
Último mensaje Abril 03, 2010, 11:01:59 pm
por Dharok
Python phpmyadmin "BruteForce"

Iniciado por linkgl

Respuestas: 2
Vistas: 2437
Último mensaje Agosto 19, 2011, 12:14:37 pm
por linkgl
Python keylogger - by "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 0
Vistas: 1959
Último mensaje Abril 07, 2010, 03:30:22 am
por d33k40