interfaz importar gui grafica example como python user-interface api

importar - tkinter python 3



¿Qué API GUI de Python están ahí? (15)

EasyGUI es diferente de otras GUI en que EasyGUI NO está basado en eventos. Le permite programar de forma lineal tradicional y colocar cuadros de diálogo para entradas y salidas simples cuando lo necesite. Si todavía no ha aprendido el paradigma guiado por eventos para la programación de GUI, EasyGUI le permitirá ser productivo con tareas muy básicas de inmediato. Más tarde, si desea realizar la transición a un paradigma de GUI basado en eventos, puede hacerlo con un paquete de GUI más potente, como anygui, PythonCard, Tkinter, wxPython, etc.

Sitio web de EasyGui

Pregunta simple:

  • ¿Qué API de GUI de Python están disponibles y cuáles son las ventajas de cualquier API dada?

No estoy buscando una guerra religiosa aquí, solo quiero obtener un buen manejo de todo lo que hay disponible en términos de API GUI de Python.


En lugar de publicar una lista de sus 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 como wxPython es la demostración que se obtiene con él. En la demostración, puede navegar a través de todos los diferentes marcos de widgets, etc. que son 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 utilizo todo el tiempo. He utilizado wxPython para aplicaciones de análisis de datos pequeños y he escrito varias herramientas internas relacionadas con la comparación de resultados de pruebas, la fusión del código fuente, etc.


Encontré este enlace hace mucho tiempo: http://www.awaretek.com/toolkits.html . Sugiere un resultado basado en sus criterios. Para mí, sugiere wxPython todo el tiempo. De todos modos, le da un montón de puntajes en los diversos kits de herramientas. Lo que es correcto para mí puede no ser adecuado para ti. Pero le muestra cómo se calificaron todos los takeits de acuerdo con sus criterios, por lo que si no le gusta el conjunto de herramientas superior, por alguna razón, puede ver cuáles están más cerca de sus criterios.

QT / GTK / WxWidgets (anteriormente wxWindows) parecen estar entre los juegos de herramientas GUI cruzadas más maduros. El único problema es que ninguno está instalado con la instalación predeterminada de Python, por lo que puede que tenga que compilar las bibliotecas. Si desea algo que no requiere instalación y que solo se ejecuta, entonces vaya con TKInter porque, como se ha mencionado, está instalado de manera predeterminada con Python.

De todos modos mis criterios fueron 9 en facilidad de uso, 10 en la 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 grande en Mac OSX (incluso con un 10 aquí sugiere wxpython).


He estado trabajando con wxPython durante algunos 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 bueno en OS / X).

La API carece de consistencia, pero te acostumbras rápidamente.

Puedes ver Testuff (plug shameless, 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).


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 sonar atractivo, pero en la práctica, significa que se ven feas en cualquier plataforma: - / Sin embargo, es bastante fácil de usar. Encontré Thinking in Tkinter muy útil cuando estaba aprendiendo, porque nunca antes había hecho ninguna programación de GUI. Sin embargo, si cosas como marcos, algoritmos de diseño y botones y enlaces le son familiares, puede omitir ese paso.

Puedes aumentar Tkinter con Tix (pero ten cuidado, Tix no juega bien con py2exe). También echa un vistazo a Python Megawidgets, que construye algunos controles más avanzados utilizando los conceptos básicos de Tkinter.

Finalmente, Tkinter juega bien con el shell: puede iniciar el intérprete, hacer cosas como ''import tkinter'' ''tk = tkinter.Tk ()'' etc. y compilar su GUI de forma interactiva (y será receptivo). (Creo que esto no funciona si usas IDLE, sin embargo)

wxPython tiene una apariencia mucho mejor y se envía con un rango de controles mucho mayor. Es multiplataforma (aunque parece un poco complicado en mi Mac) y utiliza controles nativos en cada plataforma. Aunque es un poco confuso. También se envía con una aplicación de demostración que muestra la mayoría de sus características, y proporciona un banco de pruebas para que experimentes. Algunos pensamientos específicos sobre wxPython:

  • Hay tres (?) Formas diferentes de colocar widgets. Ignora dos de ellos; solo usa Sizers. E incluso entonces, puede hacer prácticamente cualquier diseño utilizando solo BoxSizer y GridBagSizer.
  • Todos los widgets wx tienen ID. No es necesario que se preocupe por los ID, pero en los viejos tiempos (creo) que necesitaba saber, por lo que algunos códigos antiguos estarán llenos 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 del hecho de que todos los métodos tienen ID como un parámetro de palabra clave que por defecto es -1).
  • Asegúrese de obtener los documentos estándar de wxWidgets y la demostración de wxPython; los necesita a ambos.
  • Si desea usar wxPython con py2exe y desea que se vea bien en Windows XP, necesita un poco de engaño en su setup.py. Mira aquí



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

Entonces realmente depende de cuáles son sus necesidades. Si está buscando la manera más fácil de dibujar widgets de aspecto nativo en Linux, Mac y Windows, entonces vaya con wxPython (envoltorio de Python para Widgets WX). Si multiplataforma no es una de sus necesidades, otras bibliotecas pueden ser más útiles.


Me gusta wxPython o Tk.

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

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


Prefiero PyGTK, porque soy un chico de GNOME. Usar PyGTK me parece muy pitónico. La organización del código se siente coherente, la documentación es limpia y completa, y es un conjunto de herramientas muy sencillo para acostumbrarse (excepto tal vez Treeviews).


wxPython, y supongo que PyGTK también, puede usar wxGlade para ayudarlo a diseñar la mayoría de las IU que creará. Esa es una gran ventaja. No tiene que aprender cómo codificar manualmente la GUI hasta que esté listo. Hice varios programas de GUI directamente desde wxGlade antes de que me sintiera lo suficientemente cómodo con la forma en que wxPython trabajaba para obtener una oportunidad de codificación manual.

PyQt tiene un dispositivo de diseño gráfico similar, pero nunca tuve la suerte de que PyQt compilara correctamente. También hubo una falta de tutoriales y documentación que mostrara cómo crear el código final de Python; 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, de manera realista, si usas wxGlade puede ser más rápido hacer el programa con wxPython. Como mínimo, puede usar wxGlade para mostrar una representación visual del programa a un cliente en lugar de tomarse el tiempo para codificar manualmente el programa "ficticio".


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


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

Aquí está su descripción:

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 esfuerzo y codificación. La HyperCard de Apple es una de nuestras inspiraciones; simple, pero poderoso.

PythonCard usa wxPython. Si ya está familiarizado con wxPython, piense en PythonCard como una forma más simple de hacer los programas de wxPython con una gran cantidad de ejemplos y herramientas ya instaladas para que pueda copiar y subclase y herramientas que lo ayuden a crear aplicaciones multiplataforma.


WX tiene problemas en la Mac.

He echado 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 aceptará put desde el teclado. Lo he instalado tres veces en tres sistemas operativos Mac diferentes, y aunque funcionó la primera vez, las otras dos veces tuve este problema.

Esta es la versión que uso con la distribución de Enthought, por lo que no fue necesaria su instalación. Cuando lo instalé por separado, hubo tantas instalaciones dependientes, que fue una instalación de prueba.

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


Hay gui-api específicos de Python como kivy (successor o pymt), pygui (basado en pyrex), pyui y nufox, que no se pueden comparar con los toolkits más robustos como wxpython, pyqt, pygtk y tkinter.

Son solo herramientas adicionales opcionales.

Lo único único sobre ellos es que estos son api específicos de Python, al igual que hay prima (API específica para perl) y zapatos (API específica de ruby). Nos ayuda a comprender que cuando tk es un puerto de API basado en tcl (y otros están basados ​​en c y c ++), estas API se hacen específicamente para los tres lenguajes de scripts respectivos.

Fuera de estos, kivy es el más robusto, mientras que la codificación de pygui se menciona como muy parecida a python, pyui es menos robusta pero vale la pena probarlo y todos deben ser portátiles donde sea que vaya la aplicación basada en Python o python.

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