Ruby中各GUI toolkit的比较

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://rubyforge.org/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.kde.org/language-bindings/ruby/

http://rubyforge.org/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.rubygarden.org/ruby?ComparingGuiToolkits

翻译 < liubin huangpuzhuang.com>

http://blog.csdn.net/ruby_cn

 

2004/11/25

 

vRuby(VisualuRuby)

      "VisualuRuby" 是一个用在MS windows下的Ruby GUI 库。这个项目由两部分组成:swin和vruby。swin是一个Ruby扩展库,vruby是对这个库的包装( wrap),事件处理机制类似VisualBasic,但注意本项目名字和微软无关。

一段代码:

 


  require 'vr/vruby'
  require 'vr/vrcontrol'

  class MyForm < VRForm
    def construct
      self.caption="Window Caption"
      self.move(300,200,400,400)
      addControl(VRButton,"btn1","Button1",80,50,80,40)
    end

    def btn1_clicked
      messageBox "Button Pushed"
    end
  end

  VRLocalScreen.showForm(MyForm)
  VRLocalScreen.messageloop


 

 

 

Rogue

 

 

 

      Rouge是一个高层的GUI toolkit,它解释类似XUL的xml格式的GUI描述语言,并且提供了本地Ruby API。Rouge设计目标是作为前端使用,后端允许用户选择适合自己的本地GUI toolkit实现。

 

Rouge遵从Ruby license

 

RubyWebDialogs

 

意思为用web浏览器作为Ruby应用程序的GUI

Conclusion by Sy: 我想这个库真的不太适合新手。尽管我能安装成功,但是我却不知道如何写应用程序,甚至是hello world。但我想目前这不是开发者的错误。一些例子可以见:http://rwdapplications.rubyforge.org/wiki/wiki.pl)

Alph

    Alph是一种中间性接口,它用来连接Ruby(1.8)和Flash(v7)。

有用连接:

1。WideStudio

主页:http://www.widestudio.org/EE/index.html

WideStudio是一个为Linux / Linux /dev/fb direct / FreeBSD / SOLARIS / Windows95/98/ME/NT/2000/Xp WindowsCE / T-Engine / BTRON / uCLinux / ZAURUS建立GUI程序的集成开发环境(IDE), 它基于MIT/X 许可证,所以是免费的。

特点:

  • 支持C/C++, Perl, Python, Ruby 等编程语言
  • 全部原始类库,不依赖于其它库
  • 可视化窗体编辑,轻松实现GUI编程
  • 自动代码生成
  • 事件驱动机制,减少代码量 
  • 支持项目管理功能
  • 自动创建makefile,自动编译应用程序
  • 自由选择编译器,调试器,编辑器,保证舒适的开发环境
  • 切换WideStudio GUI观感 来适应Windows/Unix GUI
  • 支持UNICODE(UTF8) 和多重编码功能,比如 EUC-JP,SJIS,EUC-KR,EUC-CN,UTF8,ISO8859-X,使得编写跨平台,多语言支持的应用程序变得可能
  • 支持OpenGL 和数据库(PostgreSQL/MySQL/ODBC)

2。Apollo

Apollo = Delphi (kylix)+ Ruby

主页:http://www.moriq.com/apollo/index-en.html

下载:http://sourceforge.jp/projects/apollo/files/

Apollo在任何可以运行DELPHI6的机器上都可以运行,在linux下对Kylix支持不是太好,至少目前来说是这样。

Apollo的特徴

    • Ruby/GTK和Ruby/Tk等是UNIX下的开发工具,在windows下的亲和力不是太高。Apollo在windows下开发,能轻松编写windows下的GUI脚本。
    • 通过创建扩展应用库,Delphi的组件可以在Ruby中使用。
    • 通过使用Kylix,在windows下编写的脚本在linux下也能使用。

Apollo的缺点

    • 对Ruby的Thread和Socket支持不是太好。
    • 文档不足。 

Apollo 的发布中有几个可执行文件:

Apollo.exe
一个有简单编辑器的开发环境 
ruby_ap.exe
DOS控制台下的可执行环境

AppPath.exe

把Apollo.exe 的所在地登录到 Windows的registory中。 
ruby_aw.exe随便从脚本中搜出一个所在地、执行。把这个执行文件的名字改为与脚本相同,则此执行文件就成了该脚本专用的。ole.exe

COM server。 目的(作用)是运行sample/ole/ole_simple.vbs 。

Phi

    Phi是让你能使用Delphi的VCL地Ruby扩展库。使用方法和其它Ruby扩展库一样。

require 'phi'


然后我们就可以创建VCL了,比如:

form = Phi::Form.new
form.show

然后创建一个按钮,并处理事件。

btn = Phi::Button.new(form, :btn)
def btn.on_click
  print "click!n"
end

最后,像TK一样进入主循环。

Phi.mainloop

猜你喜欢

转载自angelguo.iteye.com/blog/2266170
今日推荐