Skip to content
IRC-CodingIRC-Coding
LinuxAplicaciones de escritorioElectronPythonJavaFXGNOMEGUI DevelopmentProgramaciónLenguajes de programación

Desarrollar aplicaciones GUI en Linux

Tutorial para crear aplicaciones de escritorio gráficas en Linux con Python, JavaScript, Electron, Java y C++.

S

schutzgeist

5 min read
Desarrollar aplicaciones GUI en Linux

Desarrollo de aplicaciones gráficas de escritorio en Linux

Fuente: Python3 Tutorial

A veces tengo la sensación de que solo programo para la web y luego surgen ideas para mis propias aplicaciones de escritorio. Puede ser una lista de tareas o programas similares.

Pero, ¿cómo implementarlo?

  • ¿Quizás un complemento para Chrome o Firefox?
  • ¿Una aplicación GNOME?
  • ¿Una aplicación de escritorio completa?

Trabajo mucho con el navegador e implemento muchas herramientas allí, pero cada proyecto requiere una implementación y lenguaje de programación diferentes.

Si también quieres escribir tus propios programas, aquí hay algunos puntos a considerar para elegir correctamente:

Bajo Linux hay varios lenguajes de programación adecuados para desarrollar programas gráficos. La elección del lenguaje correcto depende a menudo de los requisitos específicos del proyecto, las bibliotecas y frameworks disponibles, así como tus preferencias personales y conocimientos.

Lenguajes de programación para programación gráfica de escritorio en Linux

C++ con Qt

  • Qt es un framework ampliamente utilizado para desarrollar interfaces gráficas de usuario (GUI) multiplataforma.
  • C++ combinado con Qt es una opción potente para aplicaciones gráficas complejas y de alto rendimiento bajo Linux.

Sin embargo, los desarrolladores más jóvenes programan cada vez menos en C++, a menudo empiezan con Python y similares.

Python con Tkinter o PyQt

  • Python es popular por su simplicidad y legibilidad.
  • Tkinter viene incluido en la biblioteca estándar de Python y ofrece una forma sencilla de crear GUIs.
  • PyQt es un binding de Python para el framework Qt y ofrece más funcionalidades.

Java con Swing o JavaFX

  • Java es otra buena opción para desarrollar aplicaciones GUI.
  • Swing y JavaFX son dos bibliotecas Java populares para crear interfaces gráficas de usuario.

Mientras que Swing parece anticuado, JavaFX es una alternativa agradable, aunque más compleja de implementar.

C# con Mono y GTK#

Si tienes experiencia con C#, puedes usar Mono, una implementación multiplataforma del framework .NET de Microsoft, junto con GTK# para desarrollar aplicaciones GUI bajo Linux.

Uno se pregunta por qué C# en Linux. Los técnicos de informática en desarrollo de aplicaciones a menudo comienzan con C#, lo mismo ocurre en muchos programas de estudio. Microsoft está nuevamente entre los líderes, los conocimientos de C# deberían estar en cualquier lista de aprendizaje.

JavaScript con Electron

Para desarrolladores web, Electron puede ser una buena opción. Te permite crear aplicaciones de escritorio con tecnologías web como JavaScript, HTML y CSS.

Vala con GTK+

Vala es un lenguaje de programación desarrollado específicamente para la plataforma GNOME. Usa GTK+ para el desarrollo de GUI y es una buena opción si deseas enfocarte en el entorno GNOME.

Cada uno de estos lenguajes y frameworks tiene sus propias fortalezas y debilidades. La elección depende en última instancia de los requisitos específicos de tu proyecto y tu familiaridad con el lenguaje y sus herramientas asociadas.

Personalmente, dudo entre JavaScript combinado con Electron y Python con el framework Qt.

Aplicaciones de escritorio con JavaScript/Electron vs Python con QT Framework: ventajas y desventajas

JavaScript con Electron

Ventajas:

Desarrollo multiplataforma

Electron te permite desarrollar aplicaciones de escritorio para Windows, Linux y macOS usando las mismas tecnologías web (HTML, CSS, JavaScript).

Tecnologías web modernas

Los desarrolladores pueden aprovechar frameworks y bibliotecas web modernas, lo que a menudo acelera y simplifica el desarrollo.

Comunidad fuerte y recursos

Electron cuenta con el apoyo de una gran comunidad y ofrece muchos recursos y plugins.

Integración con Node.js

Las aplicaciones Electron pueden aprovechar Node.js, lo que permite acceso a un amplio ecosistema de paquetes NPM.

Desventajas:

Consumo de memoria

Las aplicaciones Electron han sido criticadas por su alto consumo de memoria y tamaño.

Rendimiento

Aunque son potentes, las aplicaciones Electron pueden ser más lentas que las aplicaciones nativas.

Seguridad

Las aplicaciones Electron pueden presentar riesgos de seguridad si no se desarrollan cuidadosamente.

Python con Tkinter/PyQt

Ventajas:

Simplicidad y velocidad con Tkinter

Tkinter es fácil de aprender y usar, lo que lo hace ideal para proyectos más pequeños y prototipado.

Componentes UI ricos con PyQt

PyQt ofrece una amplia colección de componentes UI y es adecuado para aplicaciones complejas.

Ecosistema de Python

Acceso al amplio ecosistema de bibliotecas de Python para diversos casos de uso.

Menor consumo de memoria

En comparación con Electron, las aplicaciones GUI basadas en Python a menudo consumen menos memoria.

Desventajas:

Desafíos multiplataforma

Aunque tanto Tkinter como PyQt son multiplataforma, pueden surgir desafíos respecto al look-and-feel y comportamiento en diferentes sistemas operativos.

Tecnologías más antiguas

Especialmente Tkinter puede parecer anticuado y no ofrece las características modernas disponibles en tecnologías web.

Curva de aprendizaje para PyQt

PyQt puede tener una curva de aprendizaje más pronunciada, especialmente para desarrolladores no familiarizados con Qt.

Tutorial para una lista de tareas con JavaScript y Electron en Linux

Para mostrarte el esfuerzo involucrado, quiero ilustrar los pasos necesarios para escribir tal script. Asumo que ya sabes qué programa quieres escribir y qué debe hacer. En este caso, me enfoco en una lista de tareas simple para Linux. La parte de programación permanece sin completar, ya que aquí se trata de los pasos.

Para crear una lista de tareas en Linux con JavaScript y Electron, sigue estos pasos:

Instala Node.js y npm

  • Las aplicaciones Electron se desarrollan con Node.js. Asegúrate de que Node.js y npm estén instalados en tu sistema Linux. Puedes descargarlos de nodejs.org.

Inicializa un nuevo proyecto Node.js

  • Abre una terminal.
  • Crea una nueva carpeta para tu proyecto y navega en ella (mkdir meine-todo-app && cd meine-todo-app).
  • Ejecuta npm init -y para crear un nuevo archivo package.json.

Instala Electron

Ejecuta npm install electron —save-dev en el directorio del proyecto para instalar Electron localmente en tu proyecto.

Crea tu archivo principal

  • Crea un archivo llamado main.js. Este será el punto de entrada para tu aplicación Electron.
  • En main.js inicializas la ventana de Electron y defines el comportamiento de tu aplicación.

Desarrolla la interfaz gráfica

  • Crea un archivo HTML (por ejemplo, index.html) que sirva como interfaz de usuario de tu lista de tareas.
  • Añade elementos interactivos para agregar y eliminar tareas.

Implementa la funcionalidad con JavaScript

  • Escribe código JavaScript (dentro o como archivo separado vinculado a tu archivo HTML) para permitir agregar y eliminar entradas de la lista.

Agrega tu aplicación a package.json

  • Edita el archivo package.json para definir el script de inicio de tu aplicación Electron. Por ejemplo, “start”: “electron .”.

Prueba tu aplicación

  • Ejecuta npm start en la terminal para iniciar y probar tu lista de tareas Electron.

Amplía y refina

  • Expande tu aplicación con funciones adicionales y mejora el diseño y la experiencia del usuario.

Aquí hay un ejemplo simple de la estructura de tu archivo main.js:

const { app, BrowserWindow } = require('electron');

function createWindow() {
    let win = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true
        }
    });

    win.loadFile('index.html');
}

app.whenReady().then(createWindow);

Y un ejemplo simple para tu index.html:

<!DOCTYPE html>
<html>
<head>
    <title>Meine To-Do-Liste</title>
</head>
<body>
    <h1>Meine To-Do-Liste</h1>
    <input type="text" id="todoInput">
    <button id="addTodo">Hinzufügen</button>
    <ul id="todoList"></ul>

    <script>
        // JavaScript-Code zum Hinzufügen und Entfernen von Aufgaben
    </script>
</body>
</html>

Esto te da un buen punto de partida para desarrollar una lista de tareas básica. Luego puedes agregar más características y ajustar el diseño según tus necesidades.

Volver al blog
Share:

Entradas relacionadas