2009-06-24 14 views
5

Python tiene muchas librerías de GUI: tkinter, wxWidgets, pyGTK, etc. Pero toda esta GUI necesita ser instalada y bastante pesada, por lo que es un poco complejo implementar aplicaciones de python GUI de usuario final que se transmiten en las mencionadas librerías GUI.biblioteca de python Pure gui?

Recientemente, he pensado en los tipos incorporados de python. Teóricamente, es posible crear una biblioteca de GUI pura de Python que usará ctypes en Windows (windll.user32.CreateWindowEx, etc.), pyObjC nativo en MacOS y pyGTK/pyQt en gnome/kde. ¿Existe tal biblioteca? Si no, ¿cómo piensas qué le pasa a una idea?

+1

Tkinter no necesita ser instalado, es parte de una distribución estándar de python. –

+0

Solo en ventanas y macos. Necesita ser instalado en ubuntu etc. – grigoryvp

+0

¿Quiere decir algo como "reescribir wx en python"? ¿Por qué crees que sería mejor que lo que ya se ha hecho? – nosklo

Respuesta

10

La ruta de menor esfuerzo y los mejores resultados sería aprender qué se necesita para implementar una aplicación usando esas bibliotecas de GUI existentes.

+1

+1: "bastante pesado" es una exageración. En la mayoría de los casos, necesita todo eso para construir una GUI. –

2

Creo que se trata de no inventar la rueda. Funcionaría, pero ¿por qué deberías hacer eso? Todas las bibliotecas de GUI que mencionó son estables y más o menos resistentes a balas.

Podría imaginar que hay algunos experimentos implementando una biblioteca de python pura. Pero nunca vi uno. Todo sobre las GUI es un trabajo duro y una biblioteca de python pura no tendría una audiencia tan grande.

3

Por un lado, todas aquellas bibliotecas utilizan diferentes abstracciones, entonces todo lo que trabajó con todos ellos es probable que terminan apoyando un conjunto mínimo común denominador de funcionalidad, o haciendo un montón de trabajo a utilizar cada al máximo

4

No estoy seguro de a qué te refieres con "peso pesado".

wx usa controles nativos en cada plataforma, y ​​es tan fácil de usar en Python como puedo imaginar; después de todo, las API GUI son complejas porque las GUI pueden volverse complejas.

Creo que wx, por el esfuerzo requerido para construir una ventana y la calidad de lo que aparece en la pantalla, es genial. No creo que sea mejor rodar algo mejor por su cuenta.

8

Tkinter forma parte de la distribución estándar de python y está instalado de manera predeterminada. Espere encontrar esto en todas las instalaciones de Python donde hay una pantalla gráfica en primer lugar.

+1

+1. Si necesita más artilugios, hay algunos complementos y complementos para TKinter que son livianos y mejorarán dramáticamente el conjunto de herramientas. Pero, aún así, la interfaz de usuario es fea ... –

+6

El comentario "ui is feo" generalmente solo se aplica a las versiones anteriores de Tkinter. Modern Tk usa widgets nativos en plataformas que lo soportan. Las aplicaciones de Ukly Tkinter en estos días son principalmente un reflejo del talento del programador en lugar de las limitaciones del juego de herramientas. Para obtener más información sobre esta discusión, consulte http://stackoverflow.com/questions/349409/why-are-tk-guis-considered-ugly –

+1

Tkinter se instala de forma predeterminada solo en Windows y en Macos. Necesita ser instalado en ubuntu etc. – grigoryvp

5

La noción de "biblioteca de python gui pura" es incorrecta porque en última instancia usarás llamadas y widgets de nivel de sistema, puede ser a través de tipos pero eso no cambia el hecho de que si comienzas a implementar tu idea eventualmente serás wxPython

5

Principalmente lo que está mal es que está reinventando las ruedas que ya han sido hechas por los fabricantes de GTK, Tk, Wx, QT y su tipo. Si bien una GUI pura de python es técnicamente factible, y proyectos como anygui intentaron algo similar, hay relativamente poco que ganar al hacer esto.

Los kits de herramientas nativos también harán un mejor trabajo para cubrir las diferencias entre las plataformas subyacentes (diálogos nativos, etc.). Esto significa que los kits de herramientas le permiten escribir una aplicación portátil que necesita poco o ningún código específico para la plataforma, la mayoría de esto es abstraído por el conjunto de herramientas subyacente.

Los mecanismos de distribución como py2exe en Windows y cualquiera de los métodos de Linux le permiten agrupar archivos DLL con la aplicación, para que pueda crear un instalador que coloque los componentes nativos que necesita. Sin embargo, no existe realmente una forma genérica de plataforma cruzada para hacer esto, por lo que deberá mantener instaladores separados para cada plataforma.

10

comenzando en Python 2.7 y 3.1, Tk se verá mucho mejor.

http://docs.python.org/dev/whatsnew/2.7.html#ttk-themed-widgets-for-tk

"Tcl/Tk 8.5 incluye un conjunto de widgets temáticas que vuelven a poner en práctica los widgets básicos Tk, pero tienen un aspecto más personalizable y por lo tanto puede parecerse más a los widgets de la plataforma nativa. Este conjunto de widgets se llamó originalmente Tile, pero fue renombrado a Ttk (para "Tk temático") al ser agregado a Tcl/Tck versión 8.5. "