2009-04-01 12 views
21

Hace poco trabajé modificando una aplicación de Python que estaba usando widgets wxPython. He experimentado con Python en los últimos seis o siete años, pero esta fue la primera vez que hice algún trabajo con una GUI. Estaba bastante decepcionado por lo que parece ser el estado actual de la programación de GUI con Python. Me gusta mucho el lenguaje Python, es un cambio divertido de la programación Delphi/ObjectPascal a la que estoy acostumbrado, sin duda un gran aumento de productividad para tareas de programación de propósito general. Me gustaría moverme a Python para todo.preguntas sobre el estado actual de la programación de la GUI con Python

Pero wxPython es un gran paso atrás de algo como VCL de Delphi o WinForms de .NET. Si bien Python en sí ofrece buenos aumentos de productividad al programar en general un mayor nivel de abstracción, wxPython se utiliza en un nivel de abstracción mucho más bajo que el VCL. Por ejemplo, perdí mucho tiempo tratando de hacer que un objeto de la lista wxPython se comportara como yo quería. El solo hecho de agregar columnas ordenables implicaba varios pasos intensivos en el uso del código, uno para crear y mantener una estructura de datos paralelos que proporcionaba el orden de clasificación real, otro para permitir mostrar gráficos-ordenar-dirección-triángulos en el encabezado de columna, y había un par más que no recuerdo. Todos estos pasos propensos a errores se pueden lograr simplemente estableciendo un valor de propiedad usando mi componente de grilla Delphi.

Mi conclusión: mientras que Python proporciona grandes ganancias de productividad por elevar el nivel de abstracción de una gran cantidad de codificación de propósito general, wxPython es de varios niveles de abstracción menor que las herramientas de interfaz gráfica de usuario disponibles para Delphi. Resultado neto: la programación de GUI con Delphi es mucho más rápida que la programación de GUI con Python, y el interfaz de usuario resultante con Delphi es aún más refinado y completo. No me parece que sea exagerado decir que la programación de Delphi gui fue más avanzada en 1995 que la programación de python gui con wxPython en 2009.

Investigué otros frameworks de python gui y no lo hice parece que cualquiera fue sustancialmente mejor que wxPython. También realicé una investigación mínima de los forjadores de gui para wxPython, lo que habría hecho las cosas un poco mejor. Pero según la mayoría de los informes, esas soluciones son problemáticas e incluso un gran falsificador no resolvería mis principales quejas sobre wxPython, que son simplemente que tiene menos funciones y generalmente requiere que hagas programación de usuario a un nivel mucho más bajo de abstracción que yo. acostumbrado con VCL de Delphi. Algunas investigaciones rápidas sobre las soluciones de gui-dev de python sugeridas (http://wiki.python.org/moin/GuiProgramming) son, sinceramente, algo deprimentes para alguien acostumbrado a Delphi o .NET.

Finalmente, tengo un par de preguntas.

Primero, ¿me falta algo? ¿Hay alguna solución de desarrollo de gui para Python que se pueda comparar con la programación de VCL o WinForms? No necesariamente me importa si no está a la altura de la VCL de Delphi. Solo estoy buscando algo que esté en la misma liga.

En segundo lugar, ¿podría IronPython ser la dirección correcta? Intenté principalmente evitar beber .NET koolaid, pero quizás IronPython me da una razón para finalmente ceder. Incluso entonces, IronPython se integra completamente con WinForms, o tendría que hacer que los formularios fueran respaldados por C# o vb. .¿red? Me parece que definitivamente es el caso de SharpDevelop y MonoDevelop (es decir, IronPython no se puede usar para construir gui en tiempo de diseño). ¿VS.NET integra completamente IronPython con la creación de gui?

Realmente me parece que Python podría "dominar el mundo" de una manera similar a como lo hizo Visual Basic a principios de la década de 1990, si surgió una nueva y maravillosa solución de construcción de gui para Python. Solo que esta vez con Python tendríamos un paradigma completamente nuevo de programación de programación de código abierto de código abierto rápido, multiplataforma y . ¿Las corporaciones no se comerían eso?Sí, lo sé, las aplicaciones web son el enfoque principal de las cosas en estos días, por lo que una gran solución Python-gui no crearía la misma revolución que una vez VB. Pero no veo desaparecer la programación de la interfaz gráfica de usuario y me gustaría una buena solución moderna, de código abierto y de alto nivel.

+0

¿Es este un duplicado de http://stackoverflow.com/questions/35922/are-there-any-nice-to-program-gui-toolkits-for-python? – dbr

+0

No estoy seguro. Vi bastantes publicaciones relacionadas, pero ninguna que respondió mis preguntas directamente. Siempre me pregunto si me falta algo cuando alguien sugiere una buena solución para la programación de GUI en Python. La mayoría de ellos parecen carecer de importancia en comparación con lo que estoy acostumbrado. –

+1

Me gusta esta pregunta. – jjnguy

Respuesta

12

Parece que sus quejas son sobre wxPython, no sobre el propio Python. intente pyQt (¿o es qtPython?)

pero, tanto wxPython como pyQt son solo enlaces de Python a una biblioteca C/C++ (respectivamente), es tan bajo (conceptualmente) como los originales.

pero, Qt es muy superior a wx

+0

Estoy de acuerdo; PyQt es mucho menos torpe que wxWidgets. – timday

+0

QT es impresionante, lo prefiero más de wx –

3

Es posible que desee ver en Jython (Python en la máquina virtual de Java). Es muy similar a Iron Python, y puedes ir al .Net koolaid.

2

usted está probablemente va a tener que utilizar .NET o Java pitones, pero mira esto primero y ver si cumple con sus requisitos:

Kiwi

+0

por favor, corrija el enlace, se rompió – LaBracca

0

Tiene usted razón, wxPython puede ser definitivamente mejorado. Pero creo que Robin Dunn ha hecho un gran trabajo hasta ahora, y todavía lo es.

Especialmente la comunidad wxPython está abierta a mejoras, como la inclusión reciente de los widgets por Andrea, así como muchos proyectos comunitarios eligen el que más les gusta y lo mejoran al usarlo.

+0

Han pasado años desde que utilicé wxPython, pero Robin Dunn es increíble: pasa una gran cantidad de tiempo * soportando * wx además de desarrollarlo, es muy amigable y útil, y ha reducido drásticamente la desigualdad de impedancia entre wxWidgets y Python. Lamentablemente, incluso cuando la falta de coincidencia se reduce, ... (cont.) –

+0

... se vuelve más problemático en comparación con otros kits de GUI. Acepto que Robin mantenga wxPython como un envoltorio delgado sobre wxWidgets, pero * es * más como escribir una GUI en C++ en lugar de Python ... Un generador de arrastrar y soltar sería de gran ayuda. Me pregunto qué le pasó a Boa. ¿Constructor? –

5

PyQt es un enlace a Qt SDK de Nokia, y el propio PyQt es entregado por una compañía llamada RiverBank.

Si la licencia no es importante para usted, puede usar PyQt bajo GPL o pagará un poco de dinero por una licencia comercial.

PyQt es vinculante Qt 4.4 en este momento.

Qt no es solo GUI, es un SDK C/C++ completo que ayuda con redes, xml, medios, bases de datos y otras cosas, y PyQt transfiere todo esto a python.

Con PyQt utilizará Qt Designer y transferirá el archivo .ui a .py mediante una simple línea de comando.

Encontrará muchos recursos en la web sobre PyQt y un buen soporte de diferentes comunidades, e incluso libros publicados sobre PyQt.

Muchas sugerencias consideran que RiverBank no tiene más remedio que lanzar la próxima versión que dependerá de Qt 4.5 bajo LGPL, estamos esperando :).

Otra solución es Jython con Java Swing, muy fácil y elegante de escribir (especialmente bajo JDK 6), pero no hay suficientes recursos en internet.

0

Hemos estado muy contentos de usar Python.Net para construir nuestras UI en WinForms y usar CPython para Presenter, Model. IronPython también es una buena herramienta si quieres hacer Python en Windows.

0

Hay Wax, cuyo propósito era crear una interfaz más pitónica para wxWidgets, pero parece que su desarrollo se ha estancado.

2

Respuesta corta: No intente Tkinter - tiene todos los problemas descritos anteriormente.

Respuesta larga: Tkinter no es útil para programas grandes.El manejo de las diversas piezas con él degenera de alguna manera invariablemente a malabares (lo que nunca ocurre de otra manera) y la salida resultante no se ve original o particularmente pulida.

+0

No tengo mucha experiencia con Tkinter, pero lo que he hecho (junto con algunas incursiones en Perl-Tk) apoya firmemente la idea de que Tk (en cualquier forma) es excelente para hacer una interfaz de usuario sencilla de slap-dash rápidamente, pero que tratar de hacer cualquier cosa compleja rápidamente se convierte en una lucha. –

+0

Guido sabe lo que está haciendo. Si tkinter se envía con python, hay una razón para ello. – ychaouche

+0

tkinter comparado con Delphi VCL pierde (incluso el campeón mundial de tkinter no puede ser tan productivo como un desarrollador promedio de Delphi en, por ejemplo, el prootipado de una aplicación GUI). Estoy de acuerdo con ehdv, tkinter es de bajo nivel, se envía con python porque permite utilizar el lienzo, creo, no estoy seguro de diseñar aplicaciones GUi. – LaBracca

3

dabo pone la programación de wxPython en un nivel superior como el que está buscando.

Cuestiones relacionadas