"Frameworks" de programación de GUI muy simples, concisos y fáciles [cerrado]
Enumere las bibliotecas de programación GUI, los kits de herramientas y los marcos que permiten escribir aplicaciones GUIcon rapidez. Quiero decir de tal manera que
La GUI se describe completamente en un archivo de texto sin formato (código) legible por humanos (y que se puede escribir por humanos)el código es conciso (1 o 2 líneas de código por par de widget / evento), adecuado para secuencias de comandosLa estructura y operación de la GUI es evidente a partir del código (anidamiento de widgets y flujo de eventos)detalles sobrecómo para construir la GUI están ocultos (cosas como mainloop, adjuntar oyentes de eventos, etc.)los diseños automáticos son compatibles (vboxes, hboxes, etc.)Como sugieren las respuestas, esto puede definirse comodeclarativo Programación GUI, pero no es necesariamente así. Cualquier enfoque está bien si funciona, es fácil de usar y conciso.
Hay algunas bibliotecas / kits de herramientas GUI como esta. Se enumeran a continuación. Extienda la lista si ve que falta un kit de herramientas calificado. Indique si el proyecto es multiplataforma, maduro, activo y dé un ejemplo si es posible.
Utilice esta wiki para discutirsolo código abierto proyectos
Esta es la lista hasta ahora (en orden alfabético):
FudgetsFudgets es una biblioteca de Haskell Plataforma: Unix. Estado: Experimental, pero aún se mantiene. Un ejemplo:
import Fudgets
main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))
(fuente:picamatic.com)
Renacimiento permite describir la GUI en XML simple. Plataformas: OSX / GNUstep. Estado: parte de GNUstep. Un ejemplo a continuación:
<window title="Example">
<vbox>
<label font="big">
Click the button below to quit the application
</label>
<button title="Quit" action="terminate:"/>
</vbox>
</window>
(fuente:picamatic.com)
GUI basada en HTML (HTML + JS). Plataforma cruzada, madura. Se puede usar completamente en el lado del cliente.
Buscando un buen ejemplo de "helloworld".
(fuente:picamatic.com)
JavaFX es utilizable para aplicaciones independientes (de escritorio), así como para aplicaciones web. No es completamente de plataforma cruzada, aún no es completamente de código abierto. Estado: versión 1.0. Un ejemplo:
Frame {
content: Button {
text: "Press Me"
action: operation() {
System.out.println("You pressed me");
}
}
visible: true
}
Se necesita captura de pantalla.
PhooeyPhooey Es otra biblioteca de Haskell. Crossplatform (wxWidgets), HTML + JS backend planeado. Maduro y activo. Un ejemplo (un poco más que un helloworld):
ui1 :: UI ()
ui1 = title "Shopping List" $
do a <- title "apples" $ islider (0,10) 3
b <- title "bananas" $ islider (0,10) 7
title "total" $ showDisplay (liftA2 (+) a b)
(fuente:picamatic.com)
PythonCard describe la GUI en un diccionario de Python. Plataforma cruzada (wxWidgets). Algunas aplicaciones lo usan, pero el proyecto parece estancado. Hay una bifurcación activa.
Me saltoEjemplo de PythonCard porque es demasiado detallado para el concurso.
(fuente:picamatic.com)
Zapatos para Ruby Plataformas: Win / OSX / GTK +. Estado: Joven pero activo. Una aplicación mínima se ve así:
Shoes.app {
@push = button "Push me"
@note = para "Nothing pushed so far"
@push.click {
@note.replace "Aha! Click!"
}
}
(fuente:picamatic.com)
Tcl / Tk. Crossplatform (su propio conjunto de widgets). Maduro (probablemente incluso anticuado) y activo. Un ejemplo:
#!/usr/bin/env wish
button .hello -text "Hello, World!" -command { exit }
pack .hello
tkwait window .
(fuente:picamatic.com)
tekUI para Lua (y C). Plataformas: X11, DirectFB. Estado: Alfa (utilizable, pero la API aún evoluciona). Un ejemplo:
#/usr/bin/env lua
ui = require "tek.ui"
ui.Application:new {
Children = {
ui.Window:new {
Title = "Hello",
Children = {
ui.Text:new {
Text = "_Hello, World!", Style = "button", Mode = "button",
},
},
},
},
}:run()
(fuente:picamatic.com)
Treethon para Python Describe la GUI en un archivo YAML (Python en un árbol YAML) Plataforma: GTK +. Estado: trabajo en progreso. Una aplicación simple se ve así:
_import: gtk
view: gtk.Window()
add:
- view: gtk.Button('Hello World')
on clicked: print view.get_label()
Sin embargo, la biblioteca Python sin nombre de Richard Jones:Este aún no se ha lanzado. La idea es usar administradores de contexto de Python (with
palabra clave) para estructurar el código GUI. VerBlog de Richard Jones para detalles.
with gui.vertical:
text = gui.label('hello!')
items = gui.selection(['one', 'two', 'three'])
with gui.button('click me!'):
def on_click():
text.value = items.value
text.foreground = red
XULXUL + Javascript se puede usar para crear aplicaciones de escritorio independientes con XULRunner y extensiones de Mozilla. Maduro, código abierto, plataforma cruzada.
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="main" title="My App" width="300" height="300"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<caption label="Hello World"/>
</window>
(fuente:picamatic.com)
Gracias por sus contribuciones!