martes, 24 de mayo de 2011

Puntos extras clase :interfaz grafica python

TkInter

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.
  1. from Tkinter import *  
  2.   
  3. root = Tk()  
  4.   
  5. frame = Frame(root)  
  6. frame.pack()  
  7.   
  8. label = Label(frame, text="Hola mundo")  
  9. c1 = Checkbutton(frame, text="Uno")  
  10. c2 = Checkbutton(frame, text="Dos")  
  11. entry = Entry(frame)  
  12. button = Button(frame, text="Aceptar")  
  13.   
  14. label.pack()  
  15. c1.pack()  
  16. c2.pack()  
  17. entry.pack()  
  18. button.pack()  
  19.   
  20. root.mainloop()  
GUIs en Python con TkInter
Pros: Popularidad, sencillez, documentación.
Contras: Herramientas, integración con el sistema operativo, lentitud.
Recomendado para: ¿Prototipos rápidos?

No hay comentarios:

Publicar un comentario