作者godfat (godfat 真常)
看板Ruby
标题Re: [心得] GUI
时间Tue Jul 24 21:06:54 2007
发现 wxruby 其实是有叫 wx_sugar 的 wrapper...
http://wxruby.rubyforge.org/wiki/wiki.pl?WxSugar
这样看起来确实是好多了。而我想 wxWidgets 有一个优势是效率应该不错,
再加个 wrapper 也许还可以接受
另一方面,就像上一篇提到的,ruby-gnome 我灌不起来,所以就先不试了
因故而又试了 ruby-cocoa
http://rubycocoa.sourceforge.net/
呃呃呃,我是觉得,如果要写纯 mac 程式的话,应该是不错啦
至少比直接用 obj-c 要来得好(等 obj-c 2.0 看看会不会有大改善?)
可是如果只是要做 GUI 的话,实在不觉得 ruby cocoa 有什麽好的﹍
比较一下程式码就知道:(但 ruby cocoa 在 mac 上远比其他 gui 快(废话﹍))
RubyCocoa:
require 'osx/cocoa'
include OSX
app = NSApplication.sharedApplication
hello = NSWindow.alloc.
initWithContentRect_styleMask_backing_defer [200.0, 300.0, 100.0, 100.0],
15, 2, 0
hello.setTitle 'Hello'
btn = NSButton.alloc.initWithFrame [10.0, 10.0, 80.0, 80.0]
hello.contentView.addSubview btn
btn.setTitle 'Hello World!'
btn.setAction 'stop:'
btn.setBezelStyle 4
hello.display
hello.orderFrontRegardless
app.run
这麽长,而且我暂时找不到按 X 可以让程式正常结束的方法,预设我猜是隐藏
so do java swing
FXRuby:
require 'rubygems'
require 'fox16'
include Fox
app = FXApp.new
hello = FXMainWindow.new app, "Hello"
FXButton.new hello, "Hello World!"
app.create
hello.show
app.run
wxRuby:
require 'rubygems'
require 'wx'
include Wx
class Hello < App
def on_init
hello = Frame.new nil, -1, "Hello"
StaticText.new hello, -1, "Hello World!"
hello.show
end
end
Hello.new.main_loop
QtRuby:
require 'qt'
include Qt
app = Application.new ARGV
hello = PushButton.new "Hello World!"
hello.resize 100, 30
hello.show
app.exec
当然,几个程式有设定的东西数量不同,不是很好这样比,
但是还是可以看出其风格。
wxRuby 走最传统的继承改写风,其他的就都比较用不到继承
其中最特别的应属 Qt, 他的 button 可以自成一个 frame!
看来看去觉得还是 Qt 最理想啊 :o
而且同样可以使用 Qt Designer...
ruby-gnome 不知道能不能用 glade?
等 ruby-gnome 哪天灌成功时再来试吧 XD
只是在 mac 上如果还要灌 gnome 的话,八成又要开 X11,
这样就实在不理想了﹍﹍
Apple X11 和 Aqua 的整合还满差的﹍
--
『风车』が廻り続ける度に 『美しき』幻想が静かに纺がれ
『焔』の揺らめきの外に 『腕』を伸ばす愚かな者达 -《Roman》5th Story
『宝石』をより多く掴もうと 『朝と夜』の狭间を彷徨い続ける Track 10
『星屑』の砂の煌めきにも 『葡萄酒』の仄甘い陶酔を魅せ 黄昏の贤者
『贤者』が忌避する槛の中から 『伝言』の真意を彼等に问うだろう
『天使』が别れを告げし时 『地平线』は第五の物语を识る
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18
1F:推 SHBK:ruby-gtk可以用glade呀~ 07/25 01:11