"Frameworks" de programação GUI muito simples, concisos e fáceis [fechados]

Por favor, liste bibliotecas de programação GUI, kits de ferramentas, estruturas que permitem escrever aplicativos GUIrapidamente. Quero dizer de tal maneira que

A GUI é descrita inteiramente em um arquivo de texto simples (código) legível por humanos (e gravável por humanos)o código é conciso (1 ou 2 linhas de código por par de widget / evento), adequado para scriptsestrutura e operação da GUI é evidente a partir do código (aninhamento de widgets e fluxo de eventos)detalhes sobrequão para criar a GUI estão ocultos (coisas como mainloop, anexando ouvintes de eventos etc.)layouts automáticos são suportados (vboxes, hboxes etc.)

Como as respostas sugerem, isso pode ser definido comodeclarativo Programação GUI, mas não é necessariamente tal. Qualquer abordagem é aceitável se funcionar, é fácil de usar e concisa.

Existem algumas bibliotecas / kits de ferramentas da GUI como esta. Eles estão listados abaixo. Estenda a lista se houver um kit de ferramentas qualificado ausente. Indique se o projeto é de plataforma cruzada, maduro, ativo e dê um exemplo, se possível.

Por favor, use este wiki para discutirsomente código aberto projetos.

Esta é a lista até agora (em ordem alfabética):

Fudgets

Fudgets é uma biblioteca Haskell. Plataforma: Unix. Status: Experimental, mas ainda mantido. Um exemplo:

  import Fudgets
  main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))


(fonte:picamatic.com)

Renascimento GNUstep

Renascimento permite descrever a GUI em XML simples. Plataformas: OSX / GNUstep. Status: parte do GNUstep. Um exemplo abaixo:

<window title="Example">
  <vbox>
    <label font="big">
      Click the button below to quit the application
    </label>
    <button title="Quit" action="terminate:"/>
  </vbox>
</window> 


(fonte:picamatic.com)

HTML

GUI baseada em HTML (HTML + JS). Plataforma cruzada, madura. Pode ser usado inteiramente no lado do cliente.

Procurando um bom exemplo de "helloworld".


(fonte:picamatic.com)

JavaFX

JavaFX é utilizável para aplicativos autônomos (desktop) e para aplicativos da web. Não é uma plataforma completamente cruzada, ainda não é um software totalmente aberto. Status: versão 1.0. Um exemplo:

  Frame {
    content: Button {
      text: "Press Me"
      action: operation() {
         System.out.println("You pressed me");
      }
    }
    visible: true
  }

Captura de tela é necessária.

Phooey

Phooey é outra biblioteca Haskell. Plataforma cruzada (wxWidgets), back-end HTML + JS planejado. Maduro e ativo. Um exemplo (um pouco mais que um mundo hellow):

  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)


(fonte:picamatic.com)

PythonCard

PythonCard descreve a GUI em um dicionário Python. Plataforma cruzada (wxWidgets). Alguns aplicativos o usam, mas o projeto parece parado. Há um garfo ativo.

Eu puloExemplo de PythonCard porque é muito detalhado para o concurso.


(fonte:picamatic.com)

sapatos

sapatos para Ruby. Plataformas: Win / OSX / GTK +. Status: jovem, mas ativo. Um aplicativo mínimo é assim:

  Shoes.app {
     @push = button "Push me"
     @note = para "Nothing pushed so far"
     @push.click {
        @note.replace "Aha! Click!"
     }
  }


(fonte:picamatic.com)

Tcl / Tk

Tcl / Tk. Plataforma cruzada (seu próprio conjunto de widgets). Maduro (provavelmente até datado) e ativo. Um exemplo:

  #!/usr/bin/env wish
  button .hello -text "Hello, World!" -command { exit }
  pack .hello
  tkwait window .


(fonte:picamatic.com)

tekUI

tekUI para Lua (e C). Plataformas: X11, DirectFB. Status: Alfa (utilizável, mas a API ainda evolui). Um exemplo:

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


(fonte:picamatic.com)

Treethon

Treethon para Python. Ele descreve a GUI em um arquivo YAML (Python em uma árvore YAML) Plataforma: GTK +. Status: trabalho em proress. Um aplicativo simples é assim:

  _import: gtk
  view: gtk.Window()
  add:
      - view: gtk.Button('Hello World')
        on clicked: print view.get_label()

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

No entanto, a biblioteca Python sem nome de Richard Jones:

Este ainda não foi lançado. A ideia é usar os gerenciadores de contexto Python (with palavra-chave) para estruturar o código da GUI. VejoBlog do Richard Jones para detalhes.

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 pode ser usado para criar aplicativos de área de trabalho autônomos com o XULRunner e as extensões do Mozilla. Madura, código aberto, 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>


(fonte:picamatic.com)

Obrigado por suas contribuições!

questionAnswers(9)

yourAnswerToTheQuestion