"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):

Fudgets

Fudgets 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)

GNUstep Renaissance

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)

HTML

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

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.

Phooey

Phooey 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

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

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

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

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

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()

Captura de pantalla de Treethon helloworld http://treethon.googlecode.com/svn/trunk/treethon_gtk_tutorial/base.png

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
XUL

XUL + 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!

Respuestas a la pregunta(9)

Su respuesta a la pregunta