Desarrollo de GUI en Python: Tkinter vs PyQt [cerrado]

94

Si uno quiere desarrollar una interfaz de usuario en Python, ¿cuál elegir: TkInter o PyQt?

Acabo de comenzar con TkInter y pude conseguir algunas interfaces de usuario simples con widgets elementales como etiqueta, botón, cuadro de texto, etc. ¿Solo tengo curiosidad por saber qué tan bueno sería PyQt en comparación con TkInter?

salud

Arnkrishn
fuente
3
Además, tenga en cuenta que hay bastantes opciones disponibles además de TkInter y PyQt. wxPython es el que me viene a la mente de inmediato, pero hay una lista más completa en wiki.python.org/moin/GuiProgramming y una lista más corta de los paquetes GUI más comunes enumerados en python.org/doc/faq/gui .
esm

Respuestas:

77

PyQt si está desarrollando algo serio, especialmente porque las cosas que aprende se traducirán directamente en trabajar con Qt en otros idiomas también si alguna vez lo necesita, y Qt es probablemente el mejor kit de herramientas de interfaz multiplataforma disponible en este momento.

Solo hay dos desventajas reales (potenciales):

PyQt solo está disponible bajo la GPL. Esto significa que si publica su código, debe estar disponible bajo una licencia compatible, bajo los términos de la Excepción GPL de Nokia o bajo una licencia comercial (que cuesta dinero). Esto contrasta con Qt, que ahora está disponible bajo la LGPL.

PyQt no se incluye de forma predeterminada con las instalaciones de Python. Vas a tener que empaquetar la biblioteca tú mismo. (Ars Technica tiene un buen artículo sobre cómo hacerlo para Windows y OS X.)

Sam DeFabbia-Kane
fuente
5
Para el código abierto, PyQt otorga una excepción a la GPL que especifica la lista de licencias que puede usar. El texto completo de la excepción se puede encontrar aquí y se incluye una copia en el paquete fuente de PyQt. riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang
Bien, gracias. Agregué una nota.
Sam DeFabbia-Kane
16
Nokia ha comenzado a construir una biblioteca llamada PySide que proporciona una funcionalidad casi idéntica a PyQt, pero bajo la LGPL. En este momento, solo está disponible en sistemas basados ​​en * NIX. Pero puedes simplemente intercambiar "PyQt4" por "PySide" en tus importaciones y hacer que (casi) todo funcione. pyside.org
James
El enlace para la excepción GPL de Nokia está muerto.
Stevoisiak
1
A partir de 2019, PyQt5 está disponible y PySide2 admite la mayoría de los mismos enlaces Qt bajo LGPL.
LightCC
40

PyQt es nuestro conjunto de herramientas GUI principal ahora y después de 1 año de desarrollo no quiero volver a nada más. Es estable, maduro, multiplataforma y completamente nativo. Incluso los cuadros de diálogo del sistema (por ejemplo, para abrir archivos) son los que utiliza su sistema operativo.

Modifiqué mi tema de XP y ahora la piel de mis aplicaciones en consecuencia. Esto crea un aspecto muy profesional, no comparable con un juego de herramientas como Swing. La API es extensa y va más allá de la GUI pura, como los widgets. Tiene soporte para conectividad de base de datos, impresión, subprocesamiento (lo usé y funciona como un encanto), ... incluso lo uso para generar PDF (no se necesitan otras bibliotecas externas). Recomendaría el libro de Mark Summerfield a través de ' Programación rápida de GUI con Python y Qt ' para acelerar. Tenga en cuenta que Qt viene con un constructor de GUI (diseñador de Qt) que es el mejor que he usado (y probé muchos de ellos).
Incluso utilizo este constructor para crear maquetas para mostrar a los usuarios (¡es así de fácil!).

Se lo presenté a otros 2 desarrolladores aquí y no los he escuchado quejarse ...

Wim Verhavert
fuente
10
Una advertencia: Qt solo parece nativo. Los elementos de la interfaz de usuario están emulados (al menos en Mac OS X). La "sensación" de los elementos gráficos es extraña, a veces, debido a esta emulación.
Eric O Lebigot
22

Estoy usando tkinterpara aplicaciones pequeñas con una interfaz simple. Me gusta mucho, incluso si la falta de un buen editor WYSIWYG podría ser un problema para una aplicación más grande.

Para aplicaciones grandes, PyQtpodría ser una mejor opción. Tiene un diseñador de pantalla muy bueno, pero la licencia puede ser un problema.

Finalmente, wxPythonpuede ser una buena alternativa, porque no tiene estos inconvenientes.

luc
fuente
7
He escrito grandes aplicaciones comerciales con tk sin problemas. Se escala bastante bien. No es particularmente bueno si sus conjuntos de datos se encuentran con millones de elementos, pero pocas personas desarrollan aplicaciones como esa.
Bryan Oakley
2
Gracias Bryan por sus comentarios. Esta respuesta se hizo hace mucho tiempo y ahora tengo una mejor experiencia con Tk y me gusta cada vez más.
luc
He actualizado mi respuesta. Más un pb de herramientas de desarrollo que un problema de escalabilidad
luc
8

PyQt es realmente fácil de aprender y los documentos para Qt también funcionan para PyQt, también hay puertos para .NET y Java. Por lo tanto, es multiplataforma y lenguaje cruzado. También tienes PyQt integrado en Eric IDE .

El soporte para estilos CSS también es realmente brillante.

Consulte el nuevo instalador de OpenSuSE para ver qué puede hacer con él.

przemo_li
fuente
1

Yo uso PyQt. Es multiplataforma, fácil de trabajar y confiable.

Utilicé TkInter a la ligera y no veo ningún punto que haga que TkInter sea mejor que PyQt.

Kaymatrix
fuente