浏览 5706 次
|
锁定老贴子 主题:使用wxRuby进行GUI的开发
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-11-13
前言:
wxRuby是一个开放源代码的GUI工具箱,它的底层基于跨平台由c++写成的wxWidgets。wxRuby能帮助你使用Ruby快速的创建GUI程序。 wxWidgets是一个成熟的跨平台GUI工具箱,它使用本地GUIwidgets,使得wxRuby也可以跨平台使用。 本文只为能让大家快速建立一个印象,想深入研究的请参考附上的原文链接。 项目主页:http://wxruby.rubyforge.org/wiki/wiki.pl 下载地址:http://rubyforge.org/frs/?group_id=35 一、Installing wxRuby2 原文: http://wxruby.rubyforge.org/wiki/wiki.pl?Installation wxruby最新的版本是wxruby2,但这实际上还是一个预览版,更稳定的版本是0.6.0 但不管了,我们要乐于尝试新的东西,安装wxRuby2最简单的办法是使用[rubygems], 如果你的机器上已经安装了rubygems: 1、gem install wxruby2-preview 等上一会儿,rubygems会显示wxruby相关的gems列表,选择一个与你的平台相符的。 然后rubygems会用一点时间下载gem... ... 2、装好之后你一定迫不及待的想运行一个ruby写的gui来看一下是什么样子,这儿有很多例子与gems一起被安装在你的ruby目录下,假定你的ruby在C盘下面,那么例子的路径如下(用unix与linux都是高手,不用我说太多废话吧): C:\ruby\1.8.x\lib\gems\1.8\gems\wxruby2-preview-xxx-x.x.x\samples. 好,先运行一下来看一下吧, 转到命令行下面,输入下面的命令: ruby -rubygems C:\ruby\1.8.x\lib\gems\1.8\gems\wxruby2-preview-xxx-x.x.x\samples\calendar\calendar.rb 哈哈,看到了吧 3、DIY欲望特别强烈的unixer&linuxer可能希望从源码来编译wxruby,请参考上面附上的原文 二、开始写我们的自己的第一个基于ruby的GUI程序 原文: http://wxruby.rubyforge.org/wiki/wiki.pl?Getting_Started 请留意:这个例子是在windows xp下面实现的,在unix/linux下面应该也没有问题,但某些细节可能有些差异。 1、开门见山吧,直接写第一个程序,先别拿那些概念来烦你 #require "wxruby" # wxruby 0.6.0
# OR
require "wx" # wxruby2
include Wx
class MinimalApp < App
def on_init
Frame.new(nil, -1, "The Bare Minimum").show()
end
end
MinimalApp.new.main_loop
2、解释一下,开头的引入,我们上面安装wxruby的时候,选择是wxruby2,所以应该注释掉第一行,直接使用 require "wx" 就可以了 如果你选择的版本是0.6.0,那么你应该使用 require "wxruby" 3、这一行 class MinimalApp < App 很多ruby coder应该很熟悉了。 每个用wxruby写的代码文件中都应该包含一个继续了App的类。它负责程序的入口及gui事件的处理(好像是java的main()是不是?) 下面的 def on_init定义了一个方法,这个方法从App继承,你必须用自己的代码来覆盖它。 在这个例子中,我们自己的 on_init()方法创建了一个框,并且显示出来。 4、事实上现在的代码已经可以执行了,你切换到代码所在的目录下面: ruby -rubygems minimal_app.rb 如果没有意外的话,应该显示出一个框,虽然什么都没有,但我们也感到很高兴 :) 5、好,再详细说一下 Frame.new(nil, -1, "The Bare Minimum").show()这段代码: Frame.new() 调用了Frame这个类的构造器。 第一个参数nil,表示要构造的Frame是没有父窗口的,如果有的话,应该在这儿传送。 第二个参数 -1,这是一个标识,这个标识的作用放到后面再说吧 第三个参数"The Bare Minimum", 这是Frame的标题,并且会显示在任务栏上 第四个参数在本例中省略了,应该类似于这样"Point.new(100,100)",定义了Frame在桌面上出现的位置. 第五个参数在本例中省略了,应该类似于这样"Size.new(600,480)",定义Frame的初始大小 第六个参数也省略了,是关于窗体类似,默认的类型是"DEFAULT_FRAME_STYLE",关于这个参数更多东西,后面再了解吧。 好,你可以试一下这个有更多初始参数的Frame: Frame.new(nil, -1, "The Bare Minimum", Point.new(300,300), Size.new(800,100)).show() 6、最后, MinimalApp.new.main_loop 创建一个App的实例,并调用它的mailloop方法来显示GUI,这个方法其实做了很多事,不再详细说了。 7、好,现在总结一下,我们一共做了这么几步: require "wxruby" include Wx 创建一个继承 App的类 覆盖一个方法 on_init() 创建一个实例 调用main_loop() 方法 三、有了一个大致的了解后,读一下这个吧: http://wxruby.rubyforge.org/wiki/wiki.pl?Frames_(Part_1) 没有力气再翻译了。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-11-13
看大家都在搞rails,就来点稀罕的
|
|
| 返回顶楼 | |
|
最后更新时间:2006-11-13
在http://www.wesleywang.net/里有Cross Platform GUI Programming with wxWidgets的中译本...
|
|
| 返回顶楼 | |
|
最后更新时间:2006-11-14
Cross Platform GUI Programming with wxWidgets
这个真不错 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-14
不是我要灌水,我想这是一个BUG
提交后出现了一个很奇怪的页面,当时刷新了两次就成这样了 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-14
提交后的页面,不知大家有没有遇到这个问题
浏览器maxthom和opera下面都是这样的 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-14
我的firefox也是一样。赶紧找人修复。
|
|
| 返回顶楼 | |








