sas*_*nin 60 scripting user-interface open-source declarative
请列出允许快速编写GUI应用程序的GUI编程库,工具包,框架.我的意思是这样的
正如答案所暗示的那样,这可以定义为声明性 GUI编程,但不一定是这样.任何方法都可以,如果它工作,易于使用和简洁.
有一些像这样的GUI库/工具包.它们列在下面.如果您发现缺少合格工具包,请扩展列表.指出项目是否是跨平台,成熟,活跃,并尽可能提供示例.
请使用此wiki 仅讨论开源项目.
这是到目前为止的列表(按字母顺序排列):
Fudgets是一个Haskell库.平台:Unix.状态:实验,但仍保持.一个例子:
import Fudgets
main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))
Run Code Online (Sandbox Code Playgroud)

(来源:picamatic.com)
Renaissance允许用简单的XML描述GUI.平台:OSX/GNUstep.状态:GNUstep的一部分.以下示例:
<window title="Example">
<vbox>
<label font="big">
Click the button below to quit the application
</label>
<button title="Quit" action="terminate:"/>
</vbox>
</window>
Run Code Online (Sandbox Code Playgroud)

(来源:picamatic.com)
基于HTML的GUI(HTML + JS).跨平台,成熟.可以完全在客户端使用.
寻找一个不错的"helloworld"示例.

(来源:picamatic.com)
JavaFX可用于独立(桌面)应用程序以及Web应用程序.不完全跨平台,尚未完全开源.状态:1.0发布.一个例子:
Frame {
content: Button {
text: "Press Me"
action: operation() {
System.out.println("You pressed me");
}
}
visible: true
}
Run Code Online (Sandbox Code Playgroud)
需要截图.
Phooey是另一个Haskell库.跨平台(wxWidgets),HTML + JS后端计划.成熟而活跃.一个例子(比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)
Run Code Online (Sandbox Code Playgroud)

(来源:picamatic.com)
PythonCard在Python字典中描述了GUI.跨平台(wxWidgets).一些应用程序使用它,但项目似乎停滞不前.有一个活跃的分叉.
我跳过了PythonCard的例子,因为它对于比赛来说太冗长了.

(来源:picamatic.com)
红宝石鞋.平台:Win/OSX/GTK +.现状:年轻但活跃.最小的应用程序如下所示:
Shoes.app {
@push = button "Push me"
@note = para "Nothing pushed so far"
@push.click {
@note.replace "Aha! Click!"
}
}
Run Code Online (Sandbox Code Playgroud)

(来源:picamatic.com)
Tcl/Tk.Crossplatform(自己的小部件集).成熟(可能甚至过时)和活跃.一个例子:
#!/usr/bin/env wish
button .hello -text "Hello, World!" -command { exit }
pack .hello
tkwait window .
Run Code Online (Sandbox Code Playgroud)

(来源:picamatic.com)
Lua(和C)的tekUI.平台:X11,DirectFB.状态:Alpha(可用,但API仍在发展).一个例子:
#/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()
Run Code Online (Sandbox Code Playgroud)

(来源:picamatic.com)
Treethon for Python.它描述了YAML文件中的GUI(YAML树中的Python).平台:GTK +.现状:在proress工作.一个简单的应用程序如下所示:
_import: gtk
view: gtk.Window()
add:
- view: gtk.Button('Hello World')
on clicked: print view.get_label()
Run Code Online (Sandbox Code Playgroud)
Treethon helloworld截图http://treethon.googlecode.com/svn/trunk/treethon_gtk_tutorial/base.png
这个尚未发布.我们的想法是使用Python上下文管理器(with关键字)来构建GUI代码.有关详细信息,请参阅Richard Jones的博客.
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
Run Code Online (Sandbox Code Playgroud)
XUL + Javascript可用于使用XULRunner和Mozilla扩展创建独立的桌面应用程序.成熟,开源,跨平台.
<?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>
Run Code Online (Sandbox Code Playgroud)

(来源:picamatic.com)
感谢您的贡献!
ram*_*ion 16
不是哄骗,而是HTML.
它是跨平台的,并在简单的文本文件中总结了gui-layout.它绝对是成熟的,并且有很好的理解和记录.
有很多方法可以为动态内容模拟HTML文件,以及如果您不喜欢使用尖括号,可以将自定义语法转换为HTML的其他方法.
客户端脚本w/Javascript,服务器端脚本与PHP/Ruby/Python/Perl.
它并不适合所有用途,但对许多人而言,它已经足够好了.没有理由必须提供它 - 如果你愿意,你可以将HTML文件分发给你的客户 - 请参阅TiddlyWiki,了解可以去哪里的好例子.