ventanas raspberry interfaz gui grafica ejercicios con python user-interface

raspberry - Preguntas sobre el estado actual de la programación GUI con Python



tkinter python 3 (9)

Recientemente realicé algunos trabajos para modificar una aplicación de la interfaz gráfica de Python que estaba usando los widgets wxPython. Experimenté con Python en ataques y comienza en los últimos seis o siete años, pero esta fue la primera vez que hice un trabajo con un gui. Me decepcionó bastante lo que parece ser el estado actual de la programación de GUI con Python. Me gusta mucho el lenguaje Python en sí, es un cambio divertido de la programación Delphi / ObjectPascal a la que estoy acostumbrado, definitivamente un gran aumento de productividad para tareas de programación de propósito general. Me gustaría mudarme a Python para todo.

Pero wxPython es un gran paso hacia atrás desde algo como VCL de Delphi o WinForms de .NET. Si bien Python en sí ofrece buenas ganancias de productividad de la programación en general de un nivel de abstracción más alto, wxPython se usa en un nivel de abstracción mucho más bajo que el VCL. Por ejemplo, perdí mucho tiempo intentando que un objeto de lista wxPython se comportara como yo quería. Solo para agregar columnas clasificables involucró varios pasos de código intensivo, uno para crear y mantener una estructura de datos de sombra que proporcionó el orden real, otro para hacer posible mostrar los triángulos de dirección de gráficos en el encabezado de la columna, y Hubo un par más que no recuerdo. Todos estos pasos propensos a errores podrían lograrse simplemente estableciendo un valor de propiedad usando mi componente de Delphi grid.

Mi conclusión: aunque Python proporciona grandes ganancias de productividad al elevar el nivel de abstracción para una gran cantidad de codificación de propósito general, wxPython es varios niveles de abstracción más bajos que las herramientas de interfaz 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 la interfaz de usuario resultante con Delphi es aún más pulida y completa. No me parece 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.

Hice algunas investigaciones de otros marcos gui de python y no parecía que ninguno fuera sustancialmente mejor que wxPython. También hice una investigación mínima de los formadores de gui para wxPython, lo que habría mejorado un poco las cosas. Pero, según la mayoría de los informes, esas soluciones tienen fallas e incluso un gran creador de formularios no abordaría mis principales quejas acerca de wxPython, que son simplemente que tiene menos funciones y generalmente requiere que hagas programación gui a un nivel de abstracción mucho más bajo que yo Solía ​​hacerlo con el VCL de Delphi. Un poco de investigación rápida en las soluciones sugeridas de python gui-dev ( http://wiki.python.org/moin/GuiProgramming ) es honestamente algo deprimente para alguien que está acostumbrado a Delphi o .NET.

Finalmente, tengo un par de preguntas.

Primero, ¿me estoy perdiendo algo? ¿Existe alguna solución de desarrollo de gui para Python que pueda compararse con la programación de VCL o WinForms? No me importa necesariamente si no está a la altura de la VCL de Delphi. Sólo estoy buscando algo que está en la misma liga.

Segundo, ¿podría ser IronPython la dirección a seguir? En su mayor parte traté de evitar el consumo de .NET koolaid, pero quizás IronPython me dé una razón para finalmente rendirme. Incluso entonces, IronPython se integra completamente con WinForms, o necesitaría que los formularios estén respaldados por c # o vb .¿red? A mí me parece que definitivamente es el caso de SharpDevelop y MonoDevelop (es decir, IronPython no se puede usar para hacer gui en tiempo de diseño). ¿VS.NET integra completamente IronPython con gui-building?

Realmente me parece que Python podría "conquistar el mundo" de una manera similar a como lo hizo Visual Basic a principios de la década de 1990, si surgiera para Python una nueva y maravillosa solución de creación de gui. Solo que esta vez con Python tendríamos un nuevo paradigma de programación gui rápida, multiplataforma y de código abierto . ¿No se lo comerían las corporaciones? Sí, lo sé, las aplicaciones web son el foco principal de las cosas en estos días, por lo que una excelente solución Python-gui no crearía la misma revolución que una vez hizo VB. Pero no veo que la programación gui desaparezca y me gustaría una buena solución moderna, de código abierto y de alto nivel.


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


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


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


Parece que tus quejas son sobre wxPython, no sobre Python en sí. prueba pyQt (o es qtPython?)

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

pero, Qt es muy superior a wx


Probablemente vaya a tener que usar los pitones .net o java, pero compruebe esto primero y vea si cumple con sus requisitos:

Kiwi


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

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

PyQt está atando Qt 4.4 en este momento.

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

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

Encontrará muchos recursos en la web sobre PyQt y buen soporte de diferentes comunidades, e incluso libros publicados en 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.


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

Respuesta larga: Tkinter no es útil para programas grandes. El manejo de varias piezas con él invariablemente degenera a los malabares (lo que nunca sucede de otra manera) y la salida resultante no parece nativa o particularmente pulida.


Tienes razón, wxPython definitivamente se puede mejorar. Pero creo que Robin Dunn ha hecho un gran trabajo hasta ahora, y aún lo es.

Especialmente, la comunidad wxPython está abierta a mejoras, como la inclusión reciente de los widgets de Andrea , así que como en muchos proyectos comunitarios, elija el que más le guste y mejore mientras lo usa.


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