Recientemente participé en conversaciones sobre la creación de una plantilla Quickly para una aplicación Qt y QtQuick Ubuntu. La idea es facilitar el desarrollo de aplicaciones Qt desde el concepto hasta el paquete, como lo es ahora con GTK, en el que se basa la plantilla Quickly de la aplicación Ubuntu.
La intención es seguir usando Python como el lenguaje de programación base, y la primera pregunta que viene a la mente es: ¿qué enlaces de Python debemos usar PyQt o PySide ?
Quisiera saber de las personas con experiencia en ambas tecnologías cuáles son los pros y los contras de cada uno, qué tan bien mantenido está cada uno, qué tan bien asignada está la API Qt a los enlaces, etc.
¡Gracias!
Respuestas:
Tanto PyQt4 como PySide tienen asignaciones muy similares a la API Qt. Sin embargo, existen algunas diferencias, mis opiniones sobre las cuales se describen a continuación:
Mantenimiento
Ambos están bien mantenidos. PySide produce muchos más lanzamientos regulares en este momento: creo que está más estrechamente relacionado con Qt que PyQt4 y, como proyecto más nuevo, tiene una comunidad más activa en este momento. Sin embargo, esa es solo mi impresión y puede estar equivocado.
PyQt4 tiene la opción de soporte comercial disponible (no sé si esto es cierto para PySide o no).
Licencia
PyQt4 se lanza bajo licencia comercial o GPL ; PySide se lanza bajo LGPL . Para aplicaciones comerciales, esta es una diferencia significativa.
API y versiones de Python
PyQt4 admite dos API diferentes. La versión 1 de API es la predeterminada para las aplicaciones de python 2.x y la versión 2 de API es la predeterminada para las aplicaciones de python 3.x.
PySide solo admite una API, que es más o menos equivalente a la versión 2 de la API de PyQt4. La versión 2 de la API (o la API de PySide) es mucho más agradable para trabajar que la versión 1 de la API de PyQt4. En la versión 1 de la API tienes mucho código que convierte Python cadenas a
QtCore.QString
s y viceversa. En API versión 2 (y PySide) solo usa cadenas de python en todo momento. Vea a continuación una forma simple de cambiar entre PyQt4 y PySide si desea jugar con ambos.La mayoría del código que escribo parece funcionar igualmente bien en PyQt4 y PySide. Históricamente, siempre había usado PyQt4 para las GUI de Python, pero la mayoría de las cosas nuevas que escribo ahora usan PySide (principalmente debido a las licencias más flexibles). Sin duda, te recomiendo que pruebes ambos y veas cómo los encuentras. Si usa QtVariant.py (abajo), cambiar entre ellos es trivial y cuando toma una decisión, solo habrá un archivo que necesita actualizarse.
Documentación
La documentación para PyQt4 y PySide se genera automáticamente a partir de la documentación principal de Qt . En mi opinión, la documentación de PySide es una mejor representación de lo que realmente usas, pero en la práctica tiendo a usar la documentación de Qt de todos modos (es bastante fácil traducir mentalmente la documentación de C ++ a Python).
Bibliotecas externas
Si está utilizando bibliotecas externas, algunas aún no funcionan con PySide. No hay muchos que necesite para trabajar con PySide para ser honesto, pero hace un par de años escribí un código que usaba retorcido (con el reactor Qt) y matplotlib y eso me obligó a usar PyQt4 en lugar de PySide . Creo que es muy probable que estas bibliotecas se hayan actualizado para admitir ambas por ahora, pero no lo he comprobado.
Hacer que Code funcione con PyQt4 o PySide
Suponiendo que está usando python 2.x, puede hacer que su código sea bastante fácil de usar tanto con PySide como con PyQt4 haciendo un QtVariant.py y usando:
o lo que sea. El QtVariant.py que uso se ve así:
fuente
return QtUiTools.QUiLoader().load(uifile)
tomar la ruta del archivo sin ninguna de las repeticiones de QFile.