c++ - qt creator python
Prototipos de Qt/C++ en Python (3)
Quiero escribir una aplicación C ++ con Qt, pero construir primero un prototipo usando Python y luego reemplazar gradualmente el código Python con C ++. ¿Es este el enfoque correcto?
Eso depende de tus objetivos. Habiendo hecho ambas cosas, te recomendaría que te quedes con Python siempre que sea posible y razonable. Aunque requiere un poco de disciplina, es muy posible escribir aplicaciones extremadamente grandes en Python. Pero, a medida que encuentre hotspots y cosas que pueden manejarse mejor en C ++, ciertamente puede transferir partes relevantes a C ++.
¿Hay alguna documentación exhaustiva sobre este proceso o debo aprender cada componente y, en caso afirmativo, cuáles?
Esto es lo que recomendaría para las diversas piezas:
EDITOR / IDE : utilice cualquier editor / IDE con el que se sienta cómodo, pero recomiendo uno que sea compatible con la refactorización. Si te sientes cómodo con Eclipse, úsalo. Si quieres ir principalmente a la ruta C ++ y no estás muy familiarizado con ningún editor, es posible que estés mejor con QtCreator. Eric es un IDE Python extremadamente bueno con soporte para refactorización, a menos que vayas a hacer mucho C ++, échale un vistazo. Aún mejor, su código fuente es un ejemplo de buen uso y prácticas de PyQt.
PROCESO :
El resumen rápido:
- Escribe tu aplicación en Python usando PyQt
- Cuando se identifiquen como zonas interactivas, convierta las clases de Python desacopladas a C ++
- Crear enlaces para esas clases usando SIP
- Importe las bibliotecas recién definidas en Python en lugar de sus contrapartes de Python
- Disfruta el impulso de velocidad
Detalles generales:
Escriba la aplicación en Python usando PyQt. Tenga cuidado de mantener una buena separación de preocupaciones para que cuando necesite portar piezas a C ++ estén separadas de sus dependencias. Cuando finalmente necesite portar algo a C ++, escríbalo en C ++ / Qt y luego cree enlaces para ello usando SIP . SIP tiene un buen manual de referencia sobre el proceso, y tiene todo PyQt como ejemplo.
DESPLIEGUE :
C ++ : para muchas aplicaciones, las dependencias son lo suficientemente simples como para que no sea demasiado difícil crear un instalador con una herramienta como el instalador de NullSoft o InnoSetup .
Python / PyQt : las aplicaciones PyQt son un poco más difíciles de instalar debido a la dependencia de Python y su dependencia de la presencia de las bibliotecas Qt. Una persona documentó sus esfuerzos en este post en ARSTechnica . py2exe funciona bastante bien en Windows y debería funcionar bien. IME, freeze.py , que viene con la fuente de Python, a veces tiene problemas para determinar qué librerías compartidas son realmente necesarias y algunas veces terminará creando un binario cuyas dependencias no están presentes. Se puede hacer que Py2app funcione en Mac OS X.
Pero peor , sin embargo, es la licencia de PyQt / Qt. Si está desarrollando una aplicación comercial, debe tener una licencia comercial de PyQt (y Qt) y asegúrese de evitar que los usuarios modifiquen fácilmente la fuente o escriban códigos contra la API PyQt / Qt debido a restricciones de licencia . Por eso, el autor de PyQt creó una herramienta llamada VendorId (aunque tiene una licencia de Python). Dentro de VendorId hay una herramienta llamada SIB que se puede usar para crear un ejecutable que depende solo del intérprete de Python. Pero, si vas a llegar tan lejos, es posible que desees instalar un Python personalizado junto con tu aplicación.
DESCARGO DE RESPONSABILIDAD : No he usado PySide en absoluto, así que no estoy seguro de cómo se compara con PyQt. Además, tenga en cuenta la siguiente advertencia en su sitio web:
PySide es un trabajo en progreso y todavía no es adecuado para el desarrollo de aplicaciones que requieren estabilidad a nivel de producción.
Pero, en una buena nota, pretenden, al menos para la versión inicial, "mantener compatibilidad API con PyQt". Entonces, aparte de los enlaces de C ++, podrías cambiar fácilmente entre los dos más tarde.
Quiero escribir una aplicación C ++ con Qt, pero construir primero un prototipo usando Python y luego reemplazar gradualmente el código Python con C ++.
¿Es este el enfoque correcto y qué herramientas (enlaces, generadores vinculantes, IDE) debo usar?
Idealmente, todo debería estar disponible en los repositorios de Ubuntu para no tener que preocuparme por versiones incompatibles o antiguas y tener todo configurado con una simple aptitude install
.
¿Hay alguna documentación exhaustiva sobre este proceso o debo aprender cada componente y, en caso afirmativo, cuáles?
En este momento tengo varias opciones para hacer: Qt Creator, debido a la buena finalización automática y la integración de Qt.
Eclipse, ya que ofrece soporte para C ++ y Python. Eric (no lo ha usado aún) Vim
PySide, ya que está trabajando con CMake y Boost.Python, por lo que teóricamente hará que sea más fácil reemplazar el código de python. PyQt, ya que es más ampliamente utilizado (más soporte) y está disponible como un paquete Debian.
Editar : como tendré que implementar el programa en varias computadoras, la solución C ++ requeriría de 1 a 5 archivos (el programa y algunos archivos de biblioteca si lo estoy vinculando estáticamente), usando Python, tendría que construir PyQt / PySide / SIP / lo que sea en cada plataforma y explica cómo instalar Python y todo lo demás.
Dibujaría maquetas UI antes de comenzar a codificar prototipos. Aquí hay algunos beneficios:
Más rápido que la codificación de prototipos ya que no hay programación involucrada
Rellene rápidamente widgets, como tablas y árboles, con datos
Agregue descripciones y notas a sus pantallas
Integre fácilmente maquetas en documentos de especificación sin tener que capturar pantallas
Validar los conceptos de diseño de la interfaz de usuario antes de implementar
Hay muchas herramientas que pueden ayudarlo a hacerlo, pero si va a usar Qt, MockupUI puede ser una buena opción, ya que presenta widgets Qt con estilos nativos para Windows 7,8 o 10, lo que hace que su maqueta parezca más realista. .
Si solo está aprendiendo Qt y quiere aprovechar la velocidad de creación de prototipos que Python le brinda, entonces le recomendaría que haga un proyecto de muestra usando PyQt
. Como dijiste, hay un paquete Debian, por lo que eres un simple apt-get
lejos de hacer tu primera aplicación.
Yo personalmente uso gVim
como mi editor de Python / Qt, pero realmente puedes usar cualquier editor gVim
con Python sin muchos problemas. Me gustó WingIDE
y se han completado automáticamente para Qt, pero una vez que bebes del vim kool-aid es difícil cambiar.
Diría que PySide
es 95% + compatible con PyQt
y que la licencia de LPGL
es agradable, pero si solo estás tratando de hacer un prototipo de tu primera aplicación Qt, entonces no creo que haya una razón real para usar PySide
. Aunque prefiero los documentos de PySide
, también puede usarlos y reemplazar todas las referencias de la biblioteca con PyQt
.
Dependiendo de la complejidad de la aplicación que está construyendo, sería mejor comenzar de cero con una versión en C ++ que tratar de hacer un montón de SIP
refactorizando magia negra. Una vez que tenga una sólida comprensión del marco Qt, podrá cambiar entre las uniones C ++ y Python sin esfuerzo.