Desarrollo de interfaces gráficas en Linux

Tras muchos años creando aplicaciones webs en los que me centraba fundamentalmente en la lógica de negocio de los distintos sistemas, me he visto en la necesidad de desarrollar una pequeña aplicación de escritorio en la que se debía interactuar gráficamente con el usuario.

Aunque tengo bastante experiencia con Visual Basic (todos tenemos un pasado oscuro ;)) y Java me apetecía probar algo nuevo y que mejor que hacerlo utilizando Software Libre y en Linux.

Antes de tirarme de cabeza con cualquiera de las soluciones existentes he estado evaluando algunas de las herramientas y frameworks existentes actualmente con objeto de elegir aquella que satisfaciendo mis necesidades básicas fuese lo más flexible posible.

Requisitos

Vaya por delante lo siguiente:

  • el proyecto es interno por lo que los requisitos no son excesivamente rígidos
  • debe permitirme desarrollar interfaces fácilmente
  • la solución debe centrarse exclusivamente en la creación del entorno gráfico
  • debe admitir el uso de varios lenguajes de programación en función de cuál sea más conveniente al problema a resolver
  • si fuese posible debería ser multiplataforma (“ventanuco”, mac, linux, …)
  • debe estar suficientemente maduro y documentado

Posibles alternativas

Tras indagar entre las soluciones existentes me llamaron la atención las siguientes

De forma somera os contaré las ventajas e incovenientes que he encontrado a cada una de ellas:

Entity

Es una de las soluciones que me ha parecido más elegante por la flexibilidad que le ofrece el estar basada en un dialecto de xml para la definición de la interfaz y el admitir diversos lenguajes de scripting para implementar la funcionalidad.

Me ha desencantado la falta de documentación que existe actualmente y el no haber encontrado fácilmente algún entorno de desarrollo que me facilite la definición de los formularios.

Esto último no es un obstáculo pues con un simple schema o dtd y los editores de xml que existen actualmente se pueden definir interfaces rápidamente evitando las pérdidas de tiempo que suelen provocar los IDEs gráficos.

La he descartado temporalmente aunque puede que más adelante me plantee definir alguna transformada XSLT que me permita convertir automáticamente las interfaces que desarrolle con la solución que he adoptado con objeto de aprovechar la potencia del motor de scripting que incluye de serie.

GNUe Forms

Me parece una solución muy seria que forma parte de la iniciativa GNU Enterprise y que incluye tanto herramientas de desarrollo como un potente motor para la generación e impresión de listados e informes.

Está bien documentada pero me ha resultado pobre los widgets o controles que incluye. Es de destacar lo poco acertado que resulta implementar tablas o rejillas colocando cajas de texto o listas de selección unos debajo de otros para simularla. Me recuerda Oracle Forms y a las alturas de la película en la que estamos no me parece serio.

Por lo demás es una muy buena alternativa.

Glom

En un principio parecía una alternativa sencilla y potente que admitía el uso de Python que es el lenguaje que últimamente me ha dado por utilizar.

Por desgracia la filosofía del proyecto se asemeja en exceso a Moco$oft Access (con todo lo que ello implica) por lo que he optado por descartarla directamente: el día que quiera hacerme una base de datos para gestionar mi colección de libros gratuitos en pdf ya buscaré cualquiera de los n-cientos mil programas open source que existen en Internet.

Gazpacho

Busca simplificar el desarrollo de interfaces gráficas mediante un IDE simple cuyos proyectos tienen como objetivo ser compatibles con Glade.

Es elegante, simple y compatible con Python pero me ha resultado incómodo a la hora de definir formularios; especialmente el no presentar alternativas a los layouts existentes que dificultan la ubicación de controles en la interfaz.

Qt Designer

Al final y, mientras nadie me demuestre lo contrario, se ha convertido en la opción ganadora.

He de reconocer que contaba con demasiados prejuicios antes de usarlo y recién instalado; no ayudaba en absoluto que contase con n-cientas ventanas abiertas flotando en mi escritorio (al estilo de Gimp).

Una vez superado el problema de las ventanas flotantes y cogido el truco a los layouts me he quedado maravillado con lo bien que funcionan los siguientes elementos:

  • vertical y horizontal spacer que permiten mantener correctamente cada componente en el formulario
  • el auto resize del formulario es genial
  • el poder cargar directamente en python (con cuatro líneas mal contadas) cualquier formulario creado con él
  • los signals y slots son intuitivos y fáciles de utilizar
  • la forma de definir gráficamente el orden de tabulación

Francamente, de todas las opciones evaluadas me decanto por ésta última aunque, como comenté en su momento no descarto integrarla con Entity llegado el momento.

Ahora me queda investigar su integración con otros lenguajes de programación que no sean C++ ni Java; el proyecto PyQt y Qt Script for Applications aunque a éste último le voy a dedicar menos atención pues parece estar aun demasiado “verde”

11 comentarios en “Desarrollo de interfaces gráficas en Linux

  1. En ello ando Shak, usando como IDE Glade (el gran olvidado del artículo); la única pega que le encuentro al entorno es que no es tan potente como Qt Designer (sobre todo en el manejo de layouts)

    Espero poder contar algo más cuando lo pruebe más detenidamente

    ¿Me recomiendas algún entorno bueno que me permita definir las interfaces gráficas y luego importarlas (sin tener que compilar preferiblemente) en Python?

    Un saludo

  2. Aparte de Glade como ya comentas, hay algunos más pero no sabría decirte ya que no soy un experto (estoy aprendiendo desde esta primavera pero a ritmo muy suave).

    Tengo pensados hacer unos tutoriales bastante básicos de muchos aspectos de PyGTK, sobre lo que voy aprendiendo y por no dejarlo caer en el olvido (como una splash y cosas así), pero lo tengo en pendiente (cuando mis obligaciones y tareas cotidianas me dejen tiempo).

    Te recomiendo que si te interesa el tema o quieres buscar alternativas sobre Glade, visites las listas de PythonES o PyGTK en español y preguntes por allí, seguro que te contestan mejor que yo.

    Saludos

  3. Me parece genial la idea de los tutoriales sobre PyGTK, cuando te decidas y/o encuentres el tiempo para hacerlos avisa que me encantaría poder echarles un vistazo y recomendarlos (si procede) al resto de parroquianos

  4. emilio dijo:

    Interesante lo que dice Profe pero como encuentro un libro o tutorial para aprender a utilizar las herramientas de la caja, al igual q Visual Basic?

    Todos los tutos (Bulma por) muestra una aplicación que utiliza el boton de comando y las otras herramientas? como enlazamos a datos, como hacer un Menu, etc ect
    Gracias, puede enviarme respuesta a mi correo por favor)

  5. sHIOn dijo:

    en verdad hace tiempo que quiero prender a programar pero este lenguaje me llama la atencion leyendo aki me doy cuenta que arta gente usa este lenguaje si alguien tuviera unos tutoriales basicos lo agradeceria 😀

    gracias 😀

    • Si ya conoces otros lenguajes de programación te recomiendo que simplemente busques la sintaxis básica de Python y la utilices como referencia a la hora de escribir tus programas.

      En base a ella podrás ir ampliando conocimientos documentándote sobre las distintas librerías y frameworks que existen para él.

      Suerte y ánimo con el nuevo lenguaje 😉

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s