Skip to content

vmgabriel/multi-front-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌐 py-gui-everywhere

Una librería Python para crear interfaces gráficas que funcionen con GTK o Qt, dejando al usuario elegir el backend que prefiera.

Este proyecto demuestra cómo construir una aplicación GUI portable que puede ejecutarse con PyQt6 o GTK 4 (PyGObject), seleccionando el backend en tiempo de ejecución. Ideal para desarrolladores que quieren ofrecer flexibilidad sin atarse a un solo framework.

🚀 Características

  • ✅ Soporte para PyQt6 y GTK 4
  • 🔌 Selección dinámica del backend GUI
  • 🧩 Dependencias opcionales: instala solo lo que necesitas
  • ⚡ Alto rendimiento con uv y gestión de entornos con hatch
  • 🧪 Pruebas con pytest, cobertura, linting (ruff), y type checking (mypy)
  • 🛠 Automatización con Makefile
  • 📦 Empaquetado moderno con pyproject.toml

📦 Instalación

1. Requisitos del sistema

Antes de instalar las dependencias de Python, asegúrate de tener instaladas las bibliotecas nativas del sistema:

Ubuntu/Debian

sudo apt install libgtk-4-dev libgirepository1.0-dev

Fedora

sudo dnf install gtk4-devel gobject-introspection-devel

Arch Linux

sudo pacman -S gtk4 gobject-introspection

macOS

brew install gtk4 gobject-introspection

⚠️ Sin estas dependencias, PyGObject no funcionará aunque se instale con pip.

2. Clonar y configurar el entorno

git clone https://github.com/GabrielVargas/py-gui-everywhere.git
cd py-gui-everywhere

3. Instalar dependencias

# Configurar entorno de desarrollo
make dev

# Instalar dependencias para Qt
make install-qt

# Instalar dependencias para GTK
make install-gtk

# Instalar ambos (opcional)
make install-all

▶️ Uso

Ejecutar con detección automática del backend

make run

Forzar uso de Qt

make run-qt

Forzar uso de GTK

make run-gtk

"💡 También puedes usar la variable de entorno:"

GUI_BACKEND=qt make run
GUI_BACKEND=gtk make run

🧪 Pruebas y calidad de código

# Ejecutar pruebas
make test

# Con cobertura
make cov

# Linting (ruff)
make lint

# Arreglar estilo automáticamente
make fix

# Verificación de tipos (mypy)
make type-check

# Todo en uno
make check

🔧 Desarrollo

Estructura del proyecto

py-gui-everywhere/
├── src/
│   └── py_gui_everywhere/
│       ├── __about__.py     # Versión
│       ├── demo.py          # Punto de entrada
│       └── gui/
│           ├── backend.py   # Carga dinámica de GUI
│           ├── qt_ui.py     # Interfaz con Qt
│           └── gtk_ui.py    # Interfaz con GTK 4
├── tests/                   # Pruebas unitarias
├── pyproject.toml           # Configuración del proyecto
├── Makefile                 # Automatización
└── README.md

Comandos útiles

🧰 Tecnologías usadas

Python >= 3.9
hatch  – Gestión de entornos y empaquetado
uv  – Instalador rápido de dependencias
PyQt6  – GUI con Qt
PyGObject  – GUI con GTK 4
ruff  – Linting ultra rápido
mypy  – Type checking
pytest  – Pruebas

📄 Licencia

MIT © Gabriel Vargas

🙌 Contribuir

¡Bienvenidos contribuciones! Abre un issue o PR si encuentras un bug, mejoras de código, o quieres añadir soporte para más GUIs (como Tkinter, DearPyGui, etc.).

📬 Contacto


About

Generate Multiple Frontend in python with only one code

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published