Pregunta

Pregunta simple:

  • ¿Qué API de GUI de Python existen y cuáles son las ventajas de cualquier API determinada?

No estoy buscando una guerra religiosa aquí, solo quiero tener una buena idea de todo lo que existe en términos de API de GUI de Python.

¿Fue útil?

Otros consejos

He usado Tkinter y wxPython.Tkinter es bastante básico y no utiliza widgets nativos.Esto significa que las aplicaciones de Tkinter se verán iguales en cualquier plataforma; esto puede parecer atractivo, pero en la práctica significa que se verán feas en cualquier plataforma :-/ Sin embargo, es bastante fácil de usar.encontré Pensando en Tkinter muy útil cuando estaba aprendiendo, porque nunca antes había hecho programación GUI.Sin embargo, si cosas como marcos, algoritmos de diseño, botones y enlaces le resultan familiares, puede omitir ese paso.

Puedes aumentar Tkinter con Tix (pero ten cuidado, Tix no funciona bien con py2exe).Consulte también Python Megawidgets, que crea algunos controles más avanzados utilizando los conceptos básicos de Tkinter.

Finalmente, Tkinter juega bien con el shell:puedes iniciar el intérprete, hacer cosas como 'importar tkinter' 'tk = tkinter.Tk()' etc.y cree su GUI de forma interactiva (y responderá).(Aunque creo que esto no funciona si usas IDLE)

wxPython es mucho más atractivo y viene con una gama mucho mayor de controles.Es multiplataforma (aunque parece un poco complicado en mi Mac) y utiliza controles nativos en cada plataforma.Aunque es un poco confuso.También viene con una aplicación de demostración que muestra la mayoría de sus funciones y proporciona un banco de pruebas para que experimentes.Algunas ideas específicas sobre wxPython:

  • Hay tres (?) formas diferentes de diseñar widgets.Ignora dos de ellos;solo usa Sizers.E incluso entonces, puedes hacer casi cualquier diseño usando solo BoxSizer y GridBagSizer.
  • Todos los widgets de wx tienen ID.No es necesario que le importe cuáles son las ID, pero en los viejos tiempos (creo) sí necesitaba saberlo, por lo que algunos códigos antiguos estarán plagados de asignaciones de ID explícitas.Y la mayoría del código de demostración tendrá -1 en todas partes como parámetro de ID (a pesar de que todos los métodos tienen ID como parámetro de palabra clave que de todos modos es -1 por defecto).
  • Asegúrese de obtener los documentos estándar de wxWidgets, así como la demostración de wxPython; los necesita a ambos.
  • Si desea utilizar wxPython con py2exe y desea que se vea bien en Windows XP, necesita un poco de truco en su setup.py.Ver aquí

PyQt es excelente si tienes experiencia o interés en Qt.

http://www.riverbankcomputing.co.uk/software/pyqt/intro

La mayoría de las API de GUI de Python serán envoltorios de las API de GUI de C/C++ más comunes.Tienes un contenedor de Python para gtk, un contenedor de Python para qt, un contenedor de Python para .NET, etc., etc.

Realmente depende de cuáles sean tus necesidades.Si está buscando la forma más fácil de dibujar widgets de aspecto nativo en Linux, Mac y Windows, elija wxPython (envoltorio de Python para WX Widgets).Sin embargo, si la multiplataforma no es una de sus necesidades, otras bibliotecas podrían resultar más útiles.

En lugar de publicar una lista de tus opciones, daré mi humilde opinión:

Estoy enamorado de wxPython.

He usado Qt en C++ y Tk en los días de Tcl, pero lo que realmente me hace gustar de wxPython es la demostración que obtienes con él.En la demostración, puede explorar los diferentes marcos de widgets, etc. que forman parte del marco, ver el código fuente y ver cómo se ve mientras se ejecuta.

Tuve algunos problemas para compilar e instalar la versión de Linux, pero ahora que la tengo disponible la uso todo el tiempo.He usado wxPython para pequeñas aplicaciones de análisis de datos y he escrito varias herramientas internas relacionadas con la comparación de resultados de pruebas, la fusión de código fuente, etc.

Encontré este enlace hace mucho tiempo: http://www.awaretek.com/toolkits.html.Te sugiere una toma basada en tu criterio.Para mí sugiere wxPython todo el tiempo.De todos modos, te da un montón de puntuaciones en los distintos kits de herramientas.Lo que es correcto para mí puede no serlo para usted.Pero le indica cómo calificaron todos los exámenes según sus criterios, de modo que si por alguna razón no le gusta el conjunto de herramientas principal, puede ver cuáles se aproximan más a sus criterios.

QT/GTK/WxWidgets (anteriormente wxWindows) parecen estar entre los kits de herramientas GUI multiplataforma más maduros.El único problema es que no se instala ninguno con la instalación predeterminada de Python, por lo que es posible que tengas que compilar las bibliotecas.Si desea algo que no requiera instalación y que simplemente se ejecute, elija TKInter porque, como se mencionó, se instala de forma predeterminada con Python.

De todos modos, mis criterios fueron 9 en facilidad de uso, 10 en madurez de documentación/widgets, 10 en base instalada, 5 en generadores de código gui, 10 en apariencia nativa para Windows/Linux y 1 y 5 para los dos últimos. No soy muy aficionado a Mac OSX (incluso con un 10 aquí sugiere wxpython).

Tarjeta Python es realmente fácil de usar.Eso es lo que recomendaría.

Aquí está su artículo:

Pythoncard es un kit de construcción GUI para construir aplicaciones de escritorio multiplataforma en Windows, Mac OS X y Linux, utilizando el lenguaje Python.

El lema de Pythoncard es "las cosas simples deberían ser simples y las cosas complejas deberían ser posibles".

Pythoncard es para usted si desea desarrollar aplicaciones gráficas de manera rápida y fácil con un mínimo de esfuerzo y codificación.Hypercard de Apple es una de nuestras inspiraciones;Simple, pero poderoso.

PythonCard usa wxPython.Si ya está familiarizado con WXPYTHON, solo piense en Pythoncard como una forma más simple de hacer programas WXPYTHON con muchas muestras y herramientas que ya están en su lugar para que copie y subclase y herramientas para ayudarlo a construir aplicaciones multiplataforma.

EasyGUI se diferencia de otras GUI en que EasyGUI NO se basa en eventos.Le permite programar de forma lineal tradicional y crear cuadros de diálogo para entradas y salidas sencillas cuando sea necesario.Si aún no ha aprendido el paradigma basado en eventos para la programación GUI, EasyGUI le permitirá ser productivo con tareas muy básicas de inmediato.Más adelante, si desea realizar la transición a un paradigma de GUI controlado por eventos, puede hacerlo con un paquete de GUI más potente como anygui, PythonCard, Tkinter, wxPython, etc.

Sitio web EasyGui

WX tiene problemas en Mac.

Eché un vistazo aquí, ya que quiero obtener una API GUI basada en eventos para hacer algunas cosas en Python.Tengo wx instalado en mi mac como parte de MatPlotLib, pero no funciona correctamente.No acepta entradas desde el teclado.Lo instalé tres veces en tres sistemas operativos Mac diferentes y, aunque funcionó la primera vez, las otras dos veces tuve este problema.

Esta versión la estoy usando con la distribución de Enthink, por lo que no fue necesaria ninguna instalación.Cuando lo instalé por separado, había tantas instalaciones dependientes que fue una prueba instalarlo.

Por lo que he leído aquí, le daré una oportunidad a Tkinter, ya que debe ser simple y multiplataforma, pero pensé en compartir lo anterior con ustedes.Me gusta Mac OS por varias razones diferentes, pero las herramientas de Python se instalan mucho más fácilmente en Windows (y probablemente en otros Linux).Sólo pensé en dar una perspectiva de Mac aquí.

Me gusta wxPython o Tk.

Tk viene con la distribución estándar de Python, por lo que no necesitas instalar nada más.

wxPython (wxWigets) parece mucho más potente y se ve mucho mejor.También funciona bien multiplataforma (aunque no perfectamente porque utiliza diferentes API gráficas subyacentes en tipos de sistemas diferentes)

Prefiero PyGTK porque soy un tipo de GNOME.Usar PyGTK me parece muy pitónico.La organización del código se siente consistente, la documentación es limpia y completa, y es un conjunto de herramientas muy fácil de usar (excepto quizás Treeviews).

No existe un creador de GUI fácil de usar para Python.Eso es realmente sorprendente considerando que los lenguajes de scripting pequeños como AutoIt y AutoHotkey tienen creadores de GUI geniales y muy simples de usar.Vamos, seguidores de Python, ¿no pueden hacerlo mejor?

he estado trabajando con wxPython Desde hace unos años y me gusta bastante.Lo mejor de wxPython es que la interfaz de usuario se siente nativa en las diferentes plataformas en las que se ejecuta (excelente en Windows y Linux, aunque no tan buena en OS/X).

A la API le falta cierta coherencia, pero te acostumbras rápidamente.

Puedes consultar Prueba (complemento descarado, ya que es mi propio producto) para tener una idea de lo que se puede hacer con wxPython (aunque debo decir que con bastante esfuerzo).

wxPython, y supongo que PyGTK también, puede usar wxGlade para ayudarle a diseñar la mayoría de las UI que creará.Esa es una gran ventaja.No es necesario que aprenda a codificar manualmente la GUI hasta que esté listo.Creé varios programas GUI directamente desde wxGlade antes de sentirme lo suficientemente cómodo con el funcionamiento de wxPython como para intentar codificar manualmente.

PyQt tiene un dispositivo de diseño gráfico similar, pero nunca tuve buena suerte al lograr que PyQt se compilara correctamente.También faltaron tutoriales y documentación que mostraran cómo crear el código Python final;Muchos de los documentos que encontré se referían a la versión C++ de Qt.

Tkinter es bueno para programas rápidos y sucios pero, siendo realistas, si usas wxGlade puede ser más rápido crear el programa con wxPython.Como mínimo, puede utilizar wxGlade para mostrar una representación visual del programa a un cliente en lugar de tomarse el tiempo para codificar manualmente el programa "ficticio".

Hay gui-api específicas de Python como kivy (sucesor o pymt), pygui (basado en pyrex), pyui y nufox, que no se comparan con los conjuntos de herramientas más robustos como wxpython, pyqt, pygtk y tkinter.

Son sólo herramientas opcionales adicionales.

Lo único que los distingue es que son API específicas de Python, al igual que hay prima (API específica de Perl) y Shoes (API específica de Ruby).Nos ayuda a comprender que cuando tk es una versión de API basada en tcl (y otras están basadas en c y c++), estas API se crean específicamente para los tres lenguajes de secuencias de comandos respectivos.

De estos, kivy es el más robusto, mientras que se menciona que la codificación de pygui es muy similar a python, pyui es el menos robusto pero vale la pena probarlo y todos estos deberían ser portátiles dondequiera que vaya python o una aplicación basada en python.

Luego está jpype, que es un conjunto de herramientas que se puede utilizar con jython y pydev, y que en realidad es el japi de Java personalizado en python/jython-interface.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top