Si ya sabes las bases de Python y ahora quieres crear aplicaciones de escritorio Multiplataforma, estas son 6 Herramientas de Software (Frameworks, Bibliotecas, Sdks) relacionadsa a Python que puedes usar para crear aplicaciones de Escritorio.
Tkinter
Tkinter o Tk Interface es uno de los paquetes de Python más populares y tambien es la forma estandar para crear interfaces Graficas de usuario de escritorio en Python.
Tkinter es la combinación de Tk; un toolkit open source para crear Widgets de elementos como botones, menus, canvas, textos, y asi. más código de Python que te permite controlar estas interfaces.
Si estas empezando en python y quieres crear apps de escritorio, empezar con este toolkit es muy fácil al encontrar mucha informacion (Libros, tutoriales, cursos en Youtube, etc) y al ya estar incluido muchas veces en tu instalación de Python.
Aunque tkinter solo permite crear interfaces básicas, y sus widgets pueden llegar a ser dificiles de debuggear.
Tampoco posee ningun tipo de software para diseñar interfaces graficas visualmente, y aunque hay un proyecto llamado Tkinter Designer que convierte diseños hechos en Figma a código de Tkinter, aun asi, no es tan facil personalizar proyectos grandes.
- Tkinter Designer Convierte Diseños de Figma a Tkinter
- https://en.wikipedia.org/wiki/Tk_(software)#:~:text=Tk%20is%20a%20free%20and,GUI)%20in%20many%20programming%20languages.
- https://docs.python.org/3/library/tkinter.html
- https://www.reddit.com/r/learnpython/comments/8yy8jo/how_do_you_guys_pronounce_tkinter/
PyQT
PyQT es una de las opciones más robustas para crear aplicaciones de escritorio avanzadas en Python, esta basada en el framework Qt (desarrollado por Nokia), el cual es multiplataforma, lo que signfica que puedes desarrollar apps para Windows, Linux, Mac, y Raspberry, usando el mismo código base, ademas de ser orientado a Objetos.
Qt ofrece principalmente widgets desarrollados en C++, pero ofrece bilbiotecas de otros lenguajes para interactuar con estos widgets, de aqui es donde sale PyQT.
Y puedes usar un programa para diseñar visualmente tus interfaces llamado Qt Designer.
Ademas posee APIs para poder usar protocolos de Red, o modulos para conectarte a bases de datos, y más.
Aunque Para poder usar todas las caracteristicas de este framework se necesita una licencia, pero tambien ofrece una version gratuita, con funcionalidades limitadas.
- https://doc.qt.io/qtforpython/index.html
- Sitio Oficial de Qt
- Qt - Wikipedia
- https://riverbankcomputing.com/software/pyqt/
Kyvi
Kyvi es un framework Open Source (OpenGL ES2), para crear aplicaciones multiplataforma tanto en Desktop (Windows, Linux, Mac), moviles (iOS, Android) en incluso Rapberry Pi. Todo con una sola base de código.
Todo el framework esta desarrollado combinando Cpython y Python. Aunque sus modulos son muy inestables dando errores dificil de manejar algunsa veces.
Y aunque este framework te permita crear apps moviles, muchos desarrolladores actualmente no estan muy interesados en crear apps usando Python, por lo que este framework tampoco es ampliamente utilizado en ese aspecto.
WxPython
De forma similar como la bilbioteca PyQT permite usar widgets de Qt en Python, WxPython te permite usar widgets de una bibliteca llamada WxWidget, desarrollado con C++, en Python.
Con WxPython puedes crear aplicaciones de escritorio multiplataforma (Windows, Linux, Mac) que tienen el Look and Feel de componentes nativos, y sin tener que reescribir código.
Ademas como el modulo es Open Source, puedes usarlo para crear lo que gustes.
DearPyGUI
DearPyGUI es un framework para crear desde aplicaciones de escritorio pequeñas hasta muy grandes, es Open Source, y la mayor parte del código está escrito en C++. ademas no usa los componentes nativos del sistema operativo, sino que estan desarrollaos encima de APIs de Graficos como OpenGL.
DearPyGui ofrece componentes o Widgets comunes como botones, ventanas y cajas de texto (Inputs), pero tambien componentes avanzados como graficos estadisticos, graficos de nodos, canvas, renderizado 3d, y mucho más. Ademas de soportar ejecución asincrona de código.
Haciendolo una de las opciones más robustas para crear aplicaciones Desktop multiplataformas y profesionales.
Flet
Flet es un framework relativamente nuevo, permite crear aplicaciones web y desktop usando Python junto a interface de usuario llamado Flet Controls que estan desarrolladas en Flutter (Un framework de interfaces desarrollado en Dart). es decir al igual que WxPythom o PyQt, te permite manipular widgets de otro lenguaje pero en Python.
En la practica usar esta biblioteca se le parece a usar tkinter, debido a su facilidad de instalacion y uso. Su documentacion aun es pequeña, pero tiene ejemplos muy sencillos de seguir, ademas que es más facil de entender que los de los frameworks anteriores.
El framework ya posee modulos de autenticación, animaciones, almacenaje local (sesiones y memoria), Hot Reload, ademas de otras caracteristicas.
Y Para ir a produccion te da la posiblidad de convertir tu aplicación a una app de escritorio con modulos como PyInstaller o desplegar tu proyectos en servicios de la nube como fly.io.
Tambien tienen un roadmap para eventualmente crear apps moviles, ya que hacen uso de Flutter (https://flet.dev/docs/guides/python/mobile-support)
Auque el modulo aun es poco conocido, asi que habra que esperar como le va.
Otras bibliotecas
Por cierto otros modulos que puedes usar para crear aplicaciones de escritorio en python son:
- PyGUI
- PySide2
- PySimpleGUI, https://www.pysimplegui.org/en/latest/
- PyGTK 3, https://python-gtk-3-tutorial.readthedocs.io/en/latest/
- Glade es un software para diseñar interfaces graficas para GTK
- Beware, https://beeware.org/
- PyForms, https://pyforms.readthedocs.io/en/v4/
- Wax, https://wiki.python.org/moin/Wax
- libavg, https://www.libavg.de/site/
- eel, Framework de Python que permite crear aplicaciones de escritorio utilizando tecnologia web para las interfaces y Python en el backend, similar a Electronjs en Javascript.
- Textual Te permite crear TUI (Text User Interface) con Python
- Custom tkinter es es un proyecto que permite usar las mismas funciones de Tkinter pero ofreciendo interfaces Graficas que lucen mucho más modernas
Conclusion
Como siempre escoger una opcion depende de tus necesidades, pero si buscas proyectos open Source escalables las mejores opciones con PyQT, DearPyGUI o WxPython. Flet tambien luece prometedor, pero su comunidad no es tan grande. y si buscas hacer proyectos sencillos, sin necesidad de ahondar en herramientas complicadas, tkinter sigue siendo una muy buena opcion para empezar.