分享

村长的麦田 | Ruby中各GUI toolkit的比较 (1)

 guitarhua 2013-08-16

Ruby中各GUI toolkit的比较 (1)

作者 liubin 14:06 | Permalink 静态链接网址 | Comments 最新回复 (0) | Trackback 引用 (1) | Ruby
    在这里我们会讨论一下各种GUI 工具箱(toolkits)的优点和缺点。我对于基于个人经验或传闻的主观或客观的报告很感兴趣,我不确定每个工具箱都有自己的网站。我想随着每一章节的 越来越大,它应该被重构一下。把它们放到一块比较一下,应该是不错的事情。
 

KevinSmith: 我第一个建立了这个页面,并且希望其它人能增加评论,这里的一些信息可能比较陈旧(甚至垃圾),所以我们要更新它,我删除了一些人的名字,如果这得罪了你的话,请自己在把名字加近来。

 


Tk. 从我自己来说,我不喜欢它。我想我不喜欢它的一个原因是它类似Perl一样的绑定机制,虽然这有两种方式来配置一个窗口部件(widgets),但这两种 方法都是我不喜欢的。使用类似perl的绑定机制使得熟悉Perl/Tk的人很容易上手。tk的界面观感看上去有点过时,选择widgets看上去也有点 脆弱。不过它是跨平台的,这是很不错的。我听说了人们对tk开发社区的健康关心,但最起码从Tk到Ruby绑定是比较稳定的。

BrianWisti -- RubyTk 并不是Unix系统上最吸引人的toolkit,但它是随着Ruby的发布版本一起发布的,这也是它的优点。

 


FOX. FOX有着非常好的ruby绑定,并且选择的widgets都很好,现在的开发团队也很活跃,它在win32和x windows下直接运行(不需要其它层的支持),但它并不使用 NativeWidgets.

FXRuby, 是 Fox的ruby绑定,现在已经整合到  WindowsInstaller 中了

 

  • 缺少anti aliased 字体表现.
  • 缺少unicode 字符串.

 

 

 


wxWindows. 我在一个c++的小项目中用过几个月,它是一个类似MFC的成熟的框架,开发团队看上去非常强大,而且c++看上去也是品质能得到保证。它在windows下直接能运行,而在linux下,必须在GTK或者Motif之上运行。

wxWindows尽量本地widget(NativeWidgets),当本地平台没有时,它就使用自己创建的组合widgets。在win32上,它几乎使用所有的本地widgets组件,而在GTK+上,它创建了自己的类似win32版本的树型控件和列表控件。这也使得跨平台更容易了。

同 时,还有一个对语法高亮显示的文本编辑器Scintilla (www.scintilla.org)的包装,Scintilla 支持Ruby语法。最近在ruby的邮件列表里讨论过关于ruby IDE的问题,有了Scintilla ,也许可以用wxWindows写一个有趣的Ruby IDE。

除了win32和gtk+,它也能在Mac上运行,并且准备在一些嵌入式系统中使用,已经有了关于在windows ce上使用wxWindows的讨论了。 wxWindows已经有10年的历史了,有很多widgets可供选择。

还有一个非常不错的GUI builer:wsDesigner,这个不是免费的一个学生许可证只要19$,但是不清楚它将来是否会支持wxruby。我想当wxRuby准备好的时候它的作者会这么认为的。

同样还有一个类似glade的GUI builder,wxGlade,是用python写的,它的主页上没有提到ruby,但是我想使用XRC(wxWidgets' XML resources)可能是一个解决办法

已经有面向python,perl的绑定了,用于ruby的wxruby开发团队在:http:///projects/wxruby

 

GTK. 2001年我在两个小项目上用过ruby/GTK,基本上它能满足要求。虽然一直以来对win32的支持是它的弱项,但是他们正在加强这方面的支持。尽管 这是用c写的,但是它却十分的面向对象。ruby绑定也很简洁,但是却非常接近本地C API函数库,所以现在GTK的文档也适用于Ruby/GTK。开发社区非常强大,widget也很全面,大体设计也很简洁。但是,也有不幸的一 面,GTK本身十分复杂,每个类都有很多方法。

 

AviBryant: Ruby/GTK, 不像其它绑定那样,它能很好的和非常好的GUI builder(glade)一起工作,这也算一个优点吧。

KevinSmith: 个人来说,我倾向于用代码创建一个对话框,而不是用GUI builder。现在很多toolkits都支持按布局来轻松的放置到窗体上,而不需要指定象素了。

 


Qt. 这个看起来是一个设计良好,并且提供优秀widget可供选择的toolkit,我确信它没有使用 NativeWidgets

但是,它的许可证有问题。我的理解是商业开发者或者封闭源代码的用户(任何平台上)必须为QT付费1000美元,自由得开放源代码开发者则可以免费使用。

如果我花了很多时间学习了一个包,然后以它为基础写了自己的程序,并且希望以10美元来作为共享软件发布,我不想非要买那个许可证,或者突然要转到其他的包。我并不实说qt有神么错误,只是我更倾向于使用遵从LGPL或者BSD的库。

 

Richard Dale -- 另一方面,如果你喜欢 GPL:

有一个'QtRuby?' 项目,还有一个KDE扩展集叫做Korundum,两者都是KDE的项目。命令行工具rbuic,支持Qt Designer UI builder,用来将designer的.ui文件转换为ruby代码。

概要信息可见: http://developer./language-bindings/ruby/

http:///projects/korundum/

这个绑定第一次发不是在2004年的 KDE 3.2 中。

 


FLTK.这个东西非常的轻量级-甚至在某些方面过于简单。比如,它只支持你访问256种颜色,它支持一定的widgets,它的ruby绑定版本非常容易学习,它在win32和X windows下面都使用本地特性,不使用NativeWidgets,在我最后一次查看这个项目的时候,它的Mac的版本还是beta版。

 我 比较关心的是放置组件的布局是按照象素还是使用布局管理器(layout managers)。版本2的FLTK(不知道什么时候会发布)对布局管理将提供更好的支持。它的开发团队看上去应该还算活跃。FLTK拥有的 widgets可能比较少,但是最基本的还是挺齐全的。

有一个用于C++的 GUI builder (叫做 FLUID)。

也有 Ruby/FLTK 绑定的支持。

原文:http://www./ruby?ComparingGuiToolkits

翻译 < liubin huangpuzhuang.com>

http://blog.csdn.net/ruby_cn

2004/11/25

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多