请列出允许快速编写GUI应用程序的GUI编程库,工具包,框架.我的意思是这样的
GUI完全以人类可读(和人类可写)的纯文本文件(代码)描述
代码简洁(每个小部件/事件对有1或2行代码),适合脚本编写
从代码中可以看出GUI的结构和操作(小部件和事件流的嵌套)
隐藏有关如何构建GUI的详细信息(如mainloop,附加事件侦听器等)
支持自动布局(vbox,hbox等)
正如答案所暗示的那样,这可以定义为声明性 GUI编程,但不一定是这样.任何方法都可以,如果它工作,易于使用和简洁.
有一些像这样的GUI库/工具包.它们列在下面.如果您发现缺少合格工具包,请扩展列表.指出项目是否是跨平台,成熟,活跃,并尽可能提供示例.
请使用此wiki 仅讨论开源项目.
这是到目前为止的列表(按字母顺序排列):
Fudgets是一个Haskell库.平台:Unix.状态:实验,但仍保持.一个例子:
import Fudgets main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))
(来源:picamatic.com)
Renaissance允许用简单的XML描述GUI.平台:OSX/GNUstep.状态:GNUstep的一部分.以下示例:
(来源: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 }
需要截图.
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)
(来源: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!" } }
(来源:picamatic.com)
Tcl/Tk.Crossplatform(自己的小部件集).成熟(可能甚至过时)和活跃.一个例子:
#!/usr/bin/env wish button .hello -text "Hello, World!" -command { exit } pack .hello tkwait window .
(来源: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()
(来源: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()
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
XUL + Javascript可用于使用XULRunner和Mozilla扩展创建独立的桌面应用程序.成熟,开源,跨平台.
(来源:picamatic.com)
感谢您的贡献!
不是哄骗,而是HTML.
它是跨平台的,并在简单的文本文件中总结了gui-layout.它绝对是成熟的,并且有很好的理解和记录.
有很多方法可以为动态内容模拟HTML文件,以及如果您不喜欢使用尖括号,可以将自定义语法转换为HTML的其他方法.
客户端脚本w/Javascript,服务器端脚本与PHP/Ruby/Python/Perl.
它并不适合所有用途,但对许多人而言,它已经足够好了.没有理由必须提供它 - 如果你愿意,你可以将HTML文件分发给你的客户 - 请参阅TiddlyWiki,了解可以去哪里的好例子.
除了鞋子之外,你所描述的是声明性编程的新奇概念.我将鞋子更多地描述为GUI 域特定语言.好吧,我说新的:Visual Basic表单,如果你看看IDE设计师的背后,是声明性的.因此,更进一步,Oracle的SQL*表单,尽管用文本编辑器组装它们只是一个非常最勇敢的过程.
为了向列表添加另一个,Microsoft拥有XAML,其中包括为WPF构建的GUI .
虽然提到的一些方案相当简单,但声明性定义的GUI可能与代码中定义的任何内容一样复杂,它们只是更容易和更简洁:它们说"你想要发生什么"并将其留给底层框架来处理"如何".
TCL/TK是一种用于交互式构建GUI的脚本语言.它适用于各种平台,包括Unix,Windows和Mac OS X.