作者godfat (godfat 真常)
看板Ruby
标题[心得] GUI
时间Sun Jul 22 14:29:52 2007
http://blog.godfat.idv.tw/2007/07/ruby-gui.html
Ruby GUI
关於 computer science 这个领域,除了程式语言(programming language)与
物件导向(object-oriented)外,再下一个兴趣大概就是使用者图形介面了吧(GUI).
所以我一直想找个自己喜欢的 toolkit 来用,在 C++ 中无非就是 Qt4 了,
不过在 Ruby 中,似乎没有一个比较完美的 solution, 一个个来看。
在这之前,我先说明一下我用过的 C/C++/Java GUI toolkit.
1. MFC, 学校在教如何剪贴 MFC code, 我是叛逆份子,所以一个字都没听进去。
不用别人说很糟,光看第一眼就觉得很糟,更何况他又是被骂得半死的东西。
2. wxWidgets, 这算是我第一个使用的 GUI toolkit, 基本上,我认为这真的
是个很强大的东西,没话说。不过最令人啧啧称奇的应该是他跨平台的能力,如果我
没记错的话,他跨的平台好像比 Java 还多!不过因为风格问题,我不是很喜欢。
基本上,我认为 wxWidgets 的风格有些过於老旧,写起来感觉不是很好。
Ruby binding 叫 wxRuby.
3. Qt, 我想正是因为 wxWidgets 跟我不太合,所以才继续找下去。不料找到 Qt4,
我认为这应该是接近完美的 solution 了。有人说,Qt 至少领先其他人十年,也许
这麽讲并不为过。最令人诟病的,大概就是你只能从 GPL 或超昂贵的商业 solution
两种 license 中选一种。其实我不觉得这对我来说会是很大的困扰,open source
没什麽不好,虽然 GPL 是有点太激进了些。Ruby binding 叫 QtRuby.
4. GTK+, 这个其实我不只没用过,甚至连看都没看过。理由很简单,就是我不想用
C 想用 C++. 当然我知道 GTK+ 评价不错,也有 Glade 和 win32 的 port,
只是似乎没有足够的推力让我去尝尝看。
5. Swing, 会碰这个完全只是因为需要用 Java. 我个人是觉得他跟 wxWidgets
各有千秋,但同样远逊於 Qt. 不过也许这样比较并不太公平,Java 天生就是没 C++ 强。
所以 Qt 远胜可能是理所当然的?Ruby 要用可以使用 JRuby.
6. Ultimate++, 其实这个我没用过,不过看起来是不错。没去试主要有三个原因,
一,他绑 IDE, 这个我很不爽。二,他的命名法我不能接受。三,Qt 很好。XD
其实你去看他的网站,他有一个范例程式,并用各种 toolkit 来实做。我个人认为
这个动作满不诚恳的,他有故意挑其他人弱点的嫌疑。而且各 toolkit 做到的东西
明显有差异,这样比并不公平。不诚恳,不喜欢。
7. Notus/VCF, 这两样 toolkit 都有一个很大的特色,就是 template
template and template... 基本上用 C++ 当然是要用 template 啊!!
不过知道这两样东西时我已经有一段时间没碰 GUI 了,所以并没有仔细调查这两个
toolkit 感觉如何。但我想如果没办法接受 Qt 的话,这两套 toolkit 值得一看。
8. .NET/mono, 这个其实我只用过 Visual C++ 2005 Express 稍微拉了一下
介面,感觉还不错,但直接写起程式不知道是什麽感觉。Ruby 要用的话,或许可以试试
IronRuby, 不过我个人对 .NET 没什麽好感,就不去试了。
9. VCL, Borland 的招牌,我用过 Turbo C++ Explorer, 感觉是﹍基本上
我觉得没有 .NET 好的感觉。而且要跨平台恐怕有点难,所以就不考虑了。更何况
这些好像也不算 open source 的吧?
10. FOX, 这个是我最没听过的 toolkit, 是去找 Ruby GUI 时才发现他的存在,
所以我一点都不知道他的状况究竟如何。评价似乎是不错,而且好像很年轻。只是呢﹍
FXRuby 似乎没有 mac 的 port, 而我也已经有点懒得用 C++ 写 GUI 了,
所以还是暂时跳过吧﹍。基本上没有跨 win32/x11/aqua 三大系统的 toolkit,
我就没什麽兴趣试了。
本来只想随意讲一点的,不知不觉就扯多了。接下来看 Ruby 能使用的东西:
1. tk, 没记错的话,这个被 ruby 内建起来了。不过似乎是用过的都说烂,
所以还是不要多考虑吧?
2. FXRuby, FOX 的 ruby binding, 评价相当不错,唯一的缺点也许是
还没有 mac 版的样子?我想未来应该值得继续关切,虽然我还没看过他程式
写起来像什麽样子。要试用的话,除了需要安装 FOX, FXRuby 就:
gem install fxruby
3. wxRuby, wxWidgets 的 ruby binding, 我是看到有人批评写起来像在写
C++, 这应该算是一个满大的缺点,不过看在他功能强大,跨平台能力惊人的份上,
还是值得试试看吧。要试用的话,除了需要安装 wxWidgets, wxRuby 就:
gem install wxruby
4. QtRuby, Qt3 与 Qt4 的 ruby binding, 基本上评价仍然是相当地好,
唯一的两大缺点,第一个是没有 gem, 不能 gem install qtruby, 第二个是
在 windows 上要安装似乎非常困难,没有简单的方法。但我相信假以时日,这两个
问题都能够解决(呜呜)。
5. Swing, 要灌 JRuby, 我的 macports 似乎找不到 jruby, 我又不想从
sun 的网站抓下来灌,再说,我也没喜欢过 swing 过,所以就懒得试了。
6. Mono, 我有灌 mono, 不过不是很清楚能不能用 IronRuby 之类的东西存取,
之所以写在这,算是做个笔记,说不定可以使用这样。
7. GTK+, 我不是很确定有没有 ruby binding, 但我想应该会有才是。不试的理由
同上,所以也只是暂时笔记。
Ruby 的 GUI 比较有名的大概就这几个了吧。其实我是一直想试 QtRuby 的,
虽然 windows 上似乎不太容易使用,但相信假以时日一定可以的。而让我却步最大的
问题点在於,不能用 gem 安装,macports 也找不到 QtRuby. 也就是说,
我得亲自 ./configure make make install, 但我不喜欢这样,管理不便。
所以我决定还是暂时放下他,等他有 gem 或是 port 时再说吧!
FXRuby 因为没用过 FOX, 所以也还是放着再说。更何况据说是没有 mac 版,
那我试屁啊﹍。所以左右思量之下,我还是决定先试 wxRuby! 安装方便,
强大的跨平台能力,虽然是 C++ style 而非 the ruby way, 但对我来说
C++ style 也不是那麽地令人排斥,也许有点诡异,但我觉得也可以用自己想要的
方式重新 wrap 一次,对 ruby 来说那是如此简单的事!
so have a try with wxRuby!
this is the hello world:
require 'rubygems'
require 'wx'
class HelloWorld < Wx::App
include Wx
def on_init
helloframe = Frame.new nil, -1, "Hello World"
StaticText.new helloframe, -1, "Hello World"
helloframe.show
end
end
HelloWorld.new.main_loop
sudo port install wxwidgets
sudo gem install wxruby
作者: godfat 真常 在 7/22/2007 12:52:00 下午
--
Nobody can take anything away from him.
Nor can anyone give anything to him.
What came from the sea,
has returned to the sea.
Chrono Cross
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18
1F:推 SHBK:有ruby-gtk呀~ 07/24 13:43