sábado, 29 de agosto de 2015

PROGRAMACIÓN GUI EN PYTHON CON TKINTER

PROGRAMACIÓN GUI EN PYTHON CON TKINTER

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible .

¿Qué es un GUI?  

 
GUI son las siglas de interfaz gráfica de usuario. Son herramientas para crear interfaces gráficas, esto es, componentes gráficos con los cuales el usuario interacciona con la aplicación. Hay algunos IDE's que contienen GUI's integrados.

TkInter (de TK Interface) 

Es un módulo que nos permite construir interfaces gráficas de usuario multiplataforma en Python utilizando el conocido toolkit Tk. Python incluye este módulo por defecto, lo que hace que sea un tookit muy popular. TkInter, además, es robusto, maduro y muy sencillo de aprender y de utilizar, contando con una amplia documentación. Por otro lado hasta la versión 8.5 Tk era famoso por lo poco atractivo de sus widgets (cosa que se podía solucionar hasta cierto punto gracias a Tile). No es hasta esta versión que contamos con cosas tan básicas como textos con antialiasing en X11 o widgets como Treeview. En esta versión también se incluye Tile por defecto, por lo que contamos con un mejor aspecto general para todas las plataformas. Sin embargo Python no se distribuye con Tk 8.5 hasta la versión 2.6, por lo que, para versiones de Python anteriores, es necesario recompilar TkInter para Tk 8.5 por nuestra cuenta, o bien usar Tile si no necesitamos ninguna de las nuevas características. Es más, para poder usar la mayor parte de las nuevas características de Tk 8.5 es necesario instalar una librería que actúe como wrapper de Ttk (el nombre con el que han dado en llamar al conjunto de los nuevos widgets y temas de Tk), como puede ser pyttk. TkInter se distribuye bajo la PSFL (Python Software Foundation License) una licencia compatible con la GPL creada para la distribución de software relacionado con el proyecto Python. La PSFL carece de la naturaleza viral de la GPL, por lo que permite crear trabajos derivados sin que estos se conviertan necesariamente en software libre. Por último, veamos una pequeña aplicación de ejemplo escrita con TkInter, sin uso de eventos y con solo unos pocos widgets, que nos servirá para comparar el aspecto de los distintos toolkits.

Primeros Pasos con TKinter:

Una librería de python especializada en interfaces gráficas( gui) 

Requisitos:
Antes de comenzar con la práctica tienes que tener preparado estos puntos:
  • Python( 2.7 en adelante), (obligatoria)
  • Pycharm( herramienta editor para python gratuita) opcional, puedes trabajar desde la consola de python tambien.
Pasos:
  • Instalar Python:
Descargar el instalador de python para window de esta url: https://www.python.org/downloads/
  • Descargar PyCharm: https://www.jetbrains.com/pycharm/download/, puedes descargar la versión free o trial
  •  Crear nuevo proyecto en PyCharm.
Eecutar el programa pyCharm y dirigirse al menú de opciones y clic en File -> New Proyecto

http://janorodriguez.com/wp-content/uploads/2015/02/newproyectopycharm.png


Le damos un nombre a nuestro archivo con extensión .py en Location y nos aparecera una ventana como la que sigue:
paneltrabajo

Si no se desea trabajar con PyCharm, puedes trabajar desde la consola de python que viene por defecto.

COMENZANDO A PROGRAMAR

  • Agregamos las siguientes lineas de código en el archivo creado
La funcionalidad indica que se tiene que importar la librería tkinter,
Tk es una clase que recibe multiples parametros, en este caso no recibirá ninguno.
Title es la propiedad que indicará el titulo del formulario.
Geometry indicará el ancho x el alto del formulario.
Mainloop es el encargado de manejar y manipular todos los eventos que ocurran durante el codigo.
Luego, para ejecutar la aplicación dirigirse a la barra de menus en la opción Run -> Run.

holamundoAGREGANDO CONTROLES WINDOWS AL FORMULARIO PYTHON


Considerar ahora que toda clase de Tkinter, debe tener un “parent”, y se indica en el argumento “parent” del constructor de la clase a implementar.
Entonces a partir de ahora cada control que utilizemos siempre tendrá que enviarse un elemento padre como parámetro.

Control Label

Ahora, agregaremos un elemento label cuyo código es:
donde:
fg: es el color del label.
bg: “es el color de fondo del label”
window: es el formulario padre donde el label se posicionará
text: es el texto que tendrá el elemento label.
pack: es la forma de posicionamiento que este tendrá el label, puede utilizarse tambien grid, Si no existiera ninguno de los 2 se crearía el control label pero no habría forma de mostrarlo en su elemento padre.
Ejecutamos la aplicación y tendrá que salirnos algo como est.
label


CONTROL BUTTON


El siguiente código lo que hará es mostrar un botón con el texto “Pulsar”, el método que se invoca al momento de pulsar el botón se llama mostrar, esto lo vemos en la variable command que se envia como parámetro,
La novedad aquí es el uso del método “grid” que lo que hace es posicionar el elemento al igual que pack() con la diferencia que el primero posiciona en una fila y columna determinada.
El ejemplo se verá como sigue:
button

Control Text:

El siguiente código lo que hará es mostrar un botón y una caja de texto, al presionar al botón lo que se hará es agregar un elemento label en el formulario en la fila 3 y columna 1.
La novedad aquí es que ahora trataremos de obtener el valor de la caja de texto para luego poder imprimirlo.
Para esto tendríamos que crear una variable del tipo StringVar si es que es una cadena.
Luego, en la clase Entry el parámetro que se encargará de almacenar el valor ingresado en al caja de texto es “textvariable” al que tendrá que enviarse la variable creada.
Para obtenerla utilizamos el método get.
Veamos un ejemplo en funcionamiento:
texto

Control CheckBox

Creamos otro archivo y agregamos el siguiente código:
La novedad aquí es el uso del método “grid” que lo que hace es posicionar el elemento al igual que pack() con la diferencia que el primero posiciona en una fila y columna determinada.
Veamos un ejemplo de cómo quedaría nuestro formulario:
checkbox












1 comentario: