2008-12-12 8 views
7

Quiero entrar en la programación de algunas aplicaciones basadas en GUI, pero cuando veo cosas como Swing/SWT de Java, no puedo evitar odiar la programación de una interfaz GUI creando "widget" "Objetos y poblarlos y llamar a métodos sobre ellos.GUI basada en marcado para python

Creo que el diseño de la GUI debe hacerse en un archivo de texto separado en formato de marcado, que se lee y representa (por ejemplo, HTML) para que el diseño de la interfaz no esté estrechamente relacionado con el resto del código .

He visto HTMLayout y me encanta la idea, pero hasta ahora parece ser solo en C++.

Estoy buscando una biblioteca de python (o incluso un proyecto de WIP) para hacer gui basado en markup.

ACTUALIZACIÓN

La razón por la que no puedo aceptar xml de QT es la misma razón por la que odio el enfoque programático; está ensamblando cada artilugio por separado y especificando cada propiedad en una línea separada. No proporciona ninguna ventaja sobre hacerlo de manera programática.

Respuesta

7

Puede probar el XUL de Mozilla.Es compatible con Python a través de XPCOM.

ver este proyecto: pyxpcomext

XUL no se compila, se envasa y se carga en tiempo de ejecución. Firefox y muchas otras aplicaciones excelentes lo usan, pero la mayoría usa Javascript para scripts en lugar de Python. Sin embargo, hay uno o dos usando Python.

3

Usted debe mirar en Qt, que se puede utilizar desde Python usando la excelente interfaz de PyQt (por qué no se lo nombra QtPy --- cutiepie, llegar ¿verdad? --- Nunca lo entenderé).

Con Qt, puede elegir entre construir su GUI mediante programación (que no desea), o usar el marcado XML. Este archivo XML puede compilarse para codificar de antemano o cargarse con un comando breve. Esta última es la forma normal de trabajar usando PyQt.

Qt es versátil, de alta calidad, multiplataforma, y ​​es probable que ya lo esté utilizando sin saberlo. La aplicación de cliente oficial de Skype está escrita en Qt si no recuerdo mal.

Editar: Simplemente añadiendo algunos enlaces para obtener el OP obtener alguna idea de ella ...

+0

He estado expuesto a Qt anteriormente, aunque no en profundidad en absoluto, sería útil si agregas un enlace a algo relacionado con xml-markup-thing :) – hasen

+0

Uso QT/PyQT en el trabajo y amo usar ellos. Tenga en cuenta que, mientras aprende, ambos son gratuitos, como en la licencia de código abierto de GPL, pero tan pronto como comience a vender su trabajo, debe comprar licencias de desarrollador comercial, una por desarrollador. –

+0

El marcado XML es el formato de los archivos .ui utilizados. Probablemente se puedan escribir a mano, o puede usar Qt Designer para crearlos. – gnud

-2

ventanas?

puede usar el editor WinForms en Visual Studio y luego hablar con el ensamblado desde IronPython.

+0

¿Descendente porque es para Windows? No lo entiendo +1 para compensar. – orip

+0

Downvote porque "hablar con el ensamblado" no es igual a "UI basada en marcado", además, incluso si se argumenta con éxito que está/está basado en marcas, aunque con una "biblioteca de ensamblaje" específica de Windows-IDE, sufre los mismos problemas que el OP tiene con QT. – Arafangion

+0

El editor de winforms produce código. Código particularmente feo en algunos casos. Además, IronPython es una implementación del lenguaje Python en la parte superior del tiempo de ejecución de .NET. Esto significa que pierde muchos módulos de CPython. –

2

¿Qué hay de wxPython? Ahora estoy empezando a trabajar con eso, pero hay una herramienta - Editor de recursos de XRC - que le permite ensamblar su GUI, que luego se escribe en un archivo XML. Según entiendo, tu aplicación Python carga el archivo XML, en lugar de tener un montón de código de diseño de GUI mezclado con tu código Python.

+0

+1. Probablemente la mejor opción para Python. Prefiero este enfoque al que sugerí. Una guía para los archivos de recursos XML: http://wiki.wxpython.org/UsingXmlResources –

0

Como programador de GUI que ha ganado un poco de experiencia en , probablemente solo deba rodar su pequeña y dulce caja de herramientas para automatizar las tareas que se encuentra haciendo una y otra vez.

2

Si elige un idioma como Tcl o Python y Tk para el desarrollo de su aplicación, es bastante trivial escribir su propia DSL para describir la interfaz. Puede, por ejemplo, escribir una DSL que permite crear menús de la siguiente manera:

menubar { 
    File => { 
     Open => cmd.open 
     Save => cmd.save 
     Exit => cmd.exit 
    } 
    Edit => { 
     Cut => cmd.cut 
     Copy => cmd.copy 
     Paste => cmd.paste 
    } 
} 

... y sus principales formas GUI así:

form PropertiesForm { 
      Font: [fontchooser] 
    Foreground: [foregroundChooser] 
    Background: [backgroundChooser] 
} 
form NewUserForm { 
    username [_____________________] 
    [] administrator 
    enable the following features: 
    () feature 1 
    () feature 2 
    () feature 3 
} 
notebook { 
    Properties => PropertiesForm 
    New User => NewUserForm 
} 

... y así sucesivamente. Tcl realmente se destaca al permitirte escribir DSL como este. Tenga en cuenta que esta capacidad no está incorporada en Tcl per se, pero el lenguaje hace que las DSL sean triviales. Algo de este tipo de cosas existe en la wiki de Tcler, por ejemplo, hay un código para crear menús similares a lo que describí en Menus Made Easy.

Creo, sin embargo, que después de un tiempo, será muy, muy difícil hacer UI de grado profesional de esta manera.

Cuestiones relacionadas