Programación de aplicaciones visuales en Python

Posted by in Python

Vale … ya llevo unos cuantos meses aprendiendo Python, script para esto, script para lo otro, script para otra cosa, …. todo de momento en modo no visual.

Pero ha llegado el momento de dar el salto y …

Ahora comprendo porqué no me lanzaba a aprender Python

El caso es que ahora que domino más o menos cómo programar con Python, llega el asunto clave: programar aplicaciones visuales.

El primer paso es ver las opciones (librerias) disponibles, que hay unas cuantas: https://wiki.python.org/moin/GuiProgramming.

  • Tkinter, es la que viene por defecto en Python, y no se caracteriza porque sea demasiado bonita, pero … funciona en todas las plataformas. No requiere instalación.
  • PyQt, es algo más bonita, pero sí que requiere instalarla. Es de pago, aunque tenemos PySide que es casi el mismo proyecto, pero con licencia abierta, y por tanto, podemos usar gratis.
  • wxWidgets, es también bonita, y también requiere instalarla, pues no viene por defecto en Python. Permite trabajar con otros lenguajes además de Python, como Ruby o Perl.

Hay otros, pero estos tres son los más utilizados.

De momento, estoy empezando con Tkinter, así que nos centraremos en esta librería.

Tkinter

Además de ser la librería por defecto de Python en cualquier distribución, particularmente me llama la atención de que es rapido de aprender. He estado viendo una serie de videos en YouTube sobre esta libreria, y … realmente es más sencillo programar de lo que parece. Son instrucciones claras, altamente configurable, y todo basado en un conjunto de widgets (unos 15 o así) para que los uses a tu gusto!

Si tienes previsto seguir con Tkinter, te recomiendo este magnífico tutorial: http://www.tkdocs.com/tutorial/index.html

Crear aplicaciones visuales para Tkinter

El gran problema de las opciones anteriores es que ninguna proporciona una herramienta visual para crear rápidamente, y todas se basan en código.

Pero digo yo, … todas se apoyan en código, pero ¿habrá alguna que proporcione facilidad y rapidez? Vamos a ver algunas de las que he probado.

Rapid-TK, es la primera alternativa que probé. Tiene una interfaz sobria, poco agradable, y no es wysisyg.

rapyd-TK

rapyd-TK

Debes «simular» cual será el resultado final, si bien puedes compilar y ejecutar. El resultado de lo anterior (una calculadora) es:

ejemplo de rapyd-TK

ejemplo de rapyd-TK

La segunda que he probado es Visual Tkinter Python, algo más bonita que la anterior, y aquí sí que podemos intuir más aproximadamente cómo es el formulario que estamos diseñando. Creo que está programado en .NET (al menos por el aspecto que tiene), y al estar en una versión Beta, eso significa que todavía no está madura la herramienta. Así, hecho en falta muchas cosas todavía, tiene preparados pocos widgets, ….

Visual Tkinter Python

Visual Tkinter Python

Yo creo que esta última herramienta está aun inmadura.

Visual Tkinter for Python

Parece mentira pero, la mejor alternativa que he probado hasta el momento es visual Tkinter for Python, un Add-In para Visual Basic 6 (sí, han leido bien, Visual Basic 6!!), de forma que podemos diseñar nuestros formularios en VB6, le damos al botón, y se genera el código Python de Tkinter para ficho formulario.

Para probar que funciona, vamos a trabajar con el proyecto De Cuotas a Porcentajes, que hemos hecho en este blog hace ya unos meses. En concreto, el formulario con el que trabajamos es este:

De Cuotas a Porcentajes version 4

De Cuotas a Porcentajes version 4

Así que, una vez cargada la herramienta, procedemos a verla en Visual Tkinter for Python:

Probando Visual Tkinter Python

Probando Visual Tkinter Python

El código creado lo he subido a GitHub, y el resultado, que no está nada mal (OJO, no está implementada la funcionalidad, sólo mostrar el formulario)!

Probando Visual Tkinter for Python en VB6

Probando Visual Tkinter for Python en VB6

Por cierto, quiero darle las gracias a su creador por corregir un pequeño bug que he encontrado! je je!!

En resumen …

En definitiva, que ahora vuelve a salir el verdadero motivo por el que no me inicié antes en Python, y es la ausencia de un buen IDE que facilite la programación GUI. A pesar de eso, he hecho bastantes progresos con Tkinter, y podeis leer cómo trabajar con formularios modales, o los problemas de trabajar con combobox.

Cómo podeis imaginar, no estaría mal conocer frameworks de Python, por si facilitan el trabajo.

Buen día, y estaría bien que me recomendarais otras herramientas para probar a hacer aplicaciones visuales con Python!!