¿A quien no le gusta las interfaces gráficas? Una interfaz gráfica le da al programa una apariencia más agradable, y mucho más cómoda.
Como desarrolladores Python, estamos acostumbrados a que todo funcione dentro de la terminal. Pero en cualquier momento tendremos que desarrollar una GUI (Interfaz Gráfica de Usuario). Para ello, tenemos muchas opciones.
Existe una gran variedad de módulos que nos permiten desarrollar ventanas gráficas con Python. Incluso disponemos de una librería nativa de Python llamada Tkinter. También el software PyQt, el cual nos permite desarrollar interfaces gráficas de manera rápida.
Como podemos observar tenemos muchas opciones de donde escoger.
Como pasa muy a menudo, siempre que entendemos un lenguaje de programación, y hemos trabajado con el durante un largo tiempo, queremos ampliar nuestros conocimientos y aprender otros lenguajes.
Yo trabaje durante un tiempo con el lenguaje Java, y por supuesto me toco trabajar con la clase Swing. Tal vez algunos la conozcan para los que no:
Swing una clase de java que nos permite desarrollar interfaces gráficas.
Y un día me pregunte ¿Como aprovechar los conocimientos de Java y Swing para realizar interfaces gráficas con Python? Luego de investigar un rato, me tope con Jython.
En el día de hoy, crearemos una ventana gráfica con Python utilizando la clase Swing de Java.
Java + Python = Jython.
Jython (Python en Java) es un lenguaje de programación de alto nivel, dinámico y orientado a objetos basado en Python e implementado íntegramente en Java. Es el sucesor de JPython. Jython al igual que Python es un proyecto de software libre. El lenguaje de programación Jython es prácticamente idéntico a la versión 2.51 de Python. (Fuente: Wikipedia).
En la introducción me centre en la clase Swing para las interfaces graficas. Pero Jython es una implementación de Java, eso significa que podemos usar las clases que se suelen utilizar en java:
En el ejemplo anterior vemos que se utiliza la típica clase util de Java.
Así que esta librera es muy útil para aquellos desarrolladores que trabajaron con Java y ahora trabajan con Python.
Instalación de Jython:
Jhyton no lo podemos descargar con PIP, así que dedicare un trozo de este articulo para explicar la instalación de Jython.
Jython 2.7.0 es la versión más reciente lanzada en mayo del 2015. Seleccionamos la opción de descargar el ejecutable jar.
Al terminar la descarga tendremos un archivo como este:
Para trabajar cómodamente, yo he movido el archivo a una carpeta que se encuentra en mi escritorio. Cuando tengamos todo listo, procedemos a la instalación, hacemos doble click sobre el ejecutable jar descargado:
Luego veremos una ventana así. Debemos escoger un idioma, entre ingles y Alemán, yo escogeré ingles. Una vez escogido el idioma, damos click sobre "Next".
Luego deberemos aceptar las condiciones, y dar click en "Next".
Deberemos escoger un tipo de instalación, yo escogeré "Standar".
Luego de elegir el tipo de instalación, debemos escoger el directorio en donde se descargaran los archivos de Jython. Yo escogí la carpeta Jython 2.7.0 que se encuentra en un directorio llamado Jython. Otra cosa que debemos tener en cuenta, es que el directorio en donde instalaremos los archivo de Jython debe estar vacío.
Hacemos click sobre "Next", luego veremos una ventana con las opciones que se han establecidos para la instalación:
Al hacer click en "Next", la instalación comenzara
Una vez que termine la instalación, nos mostraran el contenido del archivo README.
Luego de todo este procedimiento, Jython se encontrara instalado en la carpeta que le hayamos indicado al instalador.
Perfecto, ya disponemos de Jython instalado. ¿Como lo probamos? En la carpeta Demo que se puede apreciar en la imagen anterior, hay varios ejemplos. Pero ¿Como podemos ejecutar esos ejemplo?
Si intentamos abrir esos ejemplos en la terminal, veremos que habrán errores, es por que debemos ejecutarlos a la forma de Jython. Y ¿Como es eso? pues de la siguiente manera.
Para ejecutar un script que contenga utiliza las clases Java, se debe hacer lo siguiente:
$ java -jar jython.jar script.py
Este comando debemos ejecutarlo dentro de la carpeta de instalación. Como observan utilizamos java -jar y ejecutamos jython.jar, luego escribimos la ruta del script que deseamos ejecutar.
A continuación, un ejemplo:
Al ejecutar:
El resultada es una ventana con un Botón que al hacer click sobre el se cerrara la ventana.
El uso es muy fácil, como pueden apreciar. Pero ahora nos toca escribir nuestra propia ventana.
A continuación, los dejare con mi compañero Esteban Gabriel Guenul Almonacid, él nos hablara un poco sobre Jython y nos mostrara un ejemplo de las clases de Java en Python:
Jython: Mezclando Java y Python
Varios desarrolladores nunca se han planteado la posibilidad de mezclar dos lenguajes de programación en una sola aplicación. Me he topado con programadores php que me han dicho. “No con php puedes hacerlo todo”, pero siempre se han topado a la hora de hacer reportes. Esto básicamente a que no he visto una herramienta visual de diseño de reportes en php, pero sí en java como iReport.
Una vez programé unas rutinas de facturación electrónica en java, pero quería acelerar el desarrollo de esta. Así que me puse a desarrollar la parte web en python. No deseaba codificar los reportes. Aquí podemos decir que lenguajes como php, python no me ofrecen una forma de crear visualmente los reportes, para lo cual decidir usar Jasperreports, las cuales con unas librerías para la generación de reportes en Java. Claro podía hacer el reporte fácilmente, pero como llamaba estas rutinas de una aplicación python. Entonces decidí buscar las diferentes formas de interactuar con rutinas Java, las cuales fueron las siguientes.
Creando un Webservice Java y utilizar la biblioteca suds de Python.
O utilizando las diferentes implementaciones de interacción de python con java. Como son varías implementeaciones sólo decidí centrarme en estas dos y principalmente en la primera, para el ejemplo a demostrar
Jython: es una implementación de Python escrita en java. Es decir podemos escribir nuestros scripts en Python y ejecutarlos en la JVM.
Javabridge: es un paquete propio de CPython para interactuar con la JVM.
Ventajas de mezclar Python con Java:
Básicamente solo me centré en estas dos:
Utilización de herramientas como JASPERREPORTS, mediante webservice o librerías java.
Creación de interfaces gráficas con Swing
Usando jython con Swing:
En este caso haremos un ejemplo del uso de Jython con las librerías de Java Swing. Básicamente se creará una ventana simple:
Y finalmente teclear:
Al ejecutar:
y finalmente obtendremos la ventana utilizando las bibliotecas de java swing.
Muy bien, este es un ejemplo básico del uso de java.swing con Jython. Por supuesto, puedes hacer las pruebas que quieras.
¿Quieres más sobre este tema? Déjanoslo saber en los comentarios.
Puedes descargar el codigo del codigo desde Github: Prueba Swing.
¿Eso significa que se podría aprender java sobre la marcha, si se conoce ya Python?
Si he dicho una burrada, pido disculpas 😛