"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):
FudgetsFudgets é 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 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)
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 é 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.
PhooeyPhooey é 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 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 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. 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 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 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()
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
XULXUL + 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!