`
angelguo
  • 浏览: 118298 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ruby中各GUI toolkit的比较

    博客分类:
  • Ruby
 
阅读更多

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
分享到:
评论

相关推荐

    Eric is a full featured Python and Ruby editor and IDE,

    It is based on the cross platform Qt gui toolkit, integrating the highly flexible Scintilla editor control. It is designed to be usable as everdays' quick and dirty editor as well as being usable as ...

    glimmer:由DSL引擎和数据绑定库组成的DSL框架,用于SWT的Glimmer DSL(JRuby桌面开发GUI框架),用于Opal的Glimmer DSL(纯Ruby Web GUI),用于XML(&HTML)的Glimmer DSL,Glimmer用于CSS的DSL和用于Tk的Glimmer DSL(MRI Ruby桌面开发GUI库)

    :支持构建嵌入在Ruby中的内部DSL(例如,用于GUI,XML或CSS)。 :使GUI与模型属性双向同步。 当在Ruby中构建DSL时, 是最重要的产品: 支持在Ruby中构建最简洁的领域特定语言语法。 最大的可读性和可维护性。...

    fxruby:FXRuby 是 Ruby 的扩展模块,提供 FOX GUI 工具包的接口

    FXRuby 完整的 API 描述: 或 / 最新的 fxruby Linux 上的状态: 在 Windows 上:说明: FXRuby 是一个库,用于为您的 Ruby 应用程序开发强大而复杂的跨平台图形用户界面 (GUI)。 它基于 FOX Toolkit,这是一个由 ...

    Yet Another Windows Environment Editor-开源

    FOX GUI工具包,全称Fast and Object-Oriented GUI Toolkit,是用C++编写的一个跨平台的图形用户界面库,它提供了丰富的控件和简洁的API,让开发者可以快速构建美观的图形界面。 "Yet Another Windows Environment ...

    wxWidgets-3.1.1源码安装包

    wxWidgets(/wɪksˈwɪdʒɪts/,原名wxWindows[1])是一個開放原始碼且跨平台的物件工具集(widget toolkit),其函式庫可用來建立基本的圖形使用者介面(GUI)。wxWidgets由Julian Smart於1992年首先開發。 ...

    gtk+安装包

    GTK+(GIMP Toolkit)是一个开源的图形用户界面构建工具包,主要用于开发跨平台的应用程序。在Linux操作系统中,它是开发者构建美观、功能丰富的GUI应用的首选框架之一。GTK+支持多种编程语言,如C、Python、Ruby等...

    Fur Coder-开源

    FXRuby,全称为“FoxRuby”,是Ruby语言的一个扩展库,它允许开发者使用Ruby编写跨平台的GUI(图形用户界面)应用。FXRuby基于Fox Toolkit,一个高效的C++库,为开发人员提供了丰富的控件和事件处理机制。通过FXRuby...

    中文java的api6.0

    4. **动态语言支持**:Java 6.0引入了Java Dynamic Language Toolkit (JDT),支持脚本语言如JavaScript、Ruby等在Java平台上运行。 5. **改进的JDBC**:Java数据库连接API在6.0版本中增强了对存储过程的支持,同时...

    GTK for Windows

    GTK,全称GIMP Toolkit,是一个跨平台的开源图形用户界面库,用于创建GUI应用程序。在Windows平台上,GTK提供了一套完整的开发环境,使得开发者能够用C、C++、Python等语言编写出与Windows原生界面风格一致的应用...

    Gtk+图形界面开发

    Gtk+图形界面开发是Linux应用程序开发中的一个重要领域,它主要用于构建美观、功能丰富的图形用户界面(GUI)。Gtk+是一个跨平台的 widget 工具包,最初设计用于GNOME桌面环境,但现在也被广泛应用于其他Linux发行版...

    Trace-开源

    在Linux操作系统中,GTK+(GIMP Toolkit)是一个广泛使用的开源图形用户界面构建工具包,用于创建跨平台的应用程序。Ruby是一种面向对象的、动态的、易于学习的编程语言,以其简洁明了的语法和强大的元编程能力而闻名...

    java se6 全方位学习 ---源代码及附录

    4. **动态语言支持**:Java 6添加了Java Dynamic Language Toolkit(JDT),允许在Java平台上运行脚本语言,如JavaScript和Ruby。 5. **改进的内存管理**:包括更高效的垃圾回收机制,例如并行和并发GC策略,提升了...

    gtk+-1.2.4.tar.gz

    GTK+(GIMP Toolkit)是用于创建图形用户界面的一个开源库,主要应用于Unix-like系统,如Linux,但也支持Windows和macOS。版本1.2.4是GTK+的一个早期版本,发布于2001年左右。这个压缩包“gtk+-1.2.4.tar.gz”包含了...

    jdk 1.6 API HTML Chinese

    - **动态语言支持**:通过Java Dynamic Language Toolkit (JDT),支持Groovy、Ruby等动态语言的运行。 - **增强的XML处理**:如StAX API的引入,提供了更高效、灵活的XML解析方式。 - **JSR 203 (Java File I/O ...

    Rose Soup-开源

    GTK2是一个跨平台的GUI工具包,广泛用于创建图形用户界面,尤其在Linux操作系统中非常流行。它提供了一系列的控件和布局管理器,使得开发者能够构建出美观且功能丰富的应用界面。GTK2的灵活性和可定制性使得“Rose ...

    JDK5.CHM和JDK6.CHM 中文版

    2. **动态语言支持**:通过Java Dynamic Language Toolkit (JDT) 支持了动态语言,如Groovy和Ruby。 3. **JSR 223:脚本引擎**:使得在Java中运行JavaScript和其他脚本语言变得简单。 4. **NIO.2(New I/O 2)**:...

Global site tag (gtag.js) - Google Analytics