分享

使用wxRuby进行GUI的开发

 guitarhua 2012-12-26
前言:
wxRuby是一个开放源代码的GUI工具箱,它的底层基于跨平台由c++写成的wxWidgets。wxRuby能帮助你使用Ruby快速的创建GUI程序。
wxWidgets是一个成熟的跨平台GUI工具箱,它使用本地GUIwidgets,使得wxRuby也可以跨平台使用。

本文只为能让大家快速建立一个印象,想深入研究的请参考附上的原文链接。

项目主页:http://wxruby./wiki/wiki.pl
下载地址:http:///frs/?group_id=35

一、Installing wxRuby2
原文:
http://wxruby./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./wiki/wiki.pl?Getting_Started
请留意:这个例子是在windows xp下面实现的,在unix/linux下面应该也没有问题,但某些细节可能有些差异。

1、开门见山吧,直接写第一个程序,先别拿那些概念来烦你

Java代码  收藏代码
  1. #require "wxruby" # wxruby 0.6.0  
  2. # OR  
  3. require "wx" # wxruby2  
  4. include Wx   
  5.   
  6. class MinimalApp < App  
  7.    def on_init  
  8.         Frame.new(nil, -1"The Bare Minimum").show()  
  9.    end  
  10. end  
  11.   
  12. MinimalApp.new.main_loop  



2、解释一下,开头的引入,我们上面安装wxruby的时候,选择是wxruby2,所以应该注释掉第一行,直接使用
Java代码  收藏代码
  1. require "wx"  

就可以了
如果你选择的版本是0.6.0,那么你应该使用
Java代码  收藏代码
  1. require "wxruby"  


3、这一行
Java代码  收藏代码
  1. class MinimalApp < App   

很多ruby coder应该很熟悉了。
每个用wxruby写的代码文件中都应该包含一个继续了App的类。它负责程序的入口及gui事件的处理(好像是java的main()是不是?)
下面的
Java代码  收藏代码
  1. def on_init  
定义了一个方法,这个方法从App继承,你必须用自己的代码来覆盖它。
在这个例子中,我们自己的 on_init()方法创建了一个框,并且显示出来。

4、事实上现在的代码已经可以执行了,你切换到代码所在的目录下面:
ruby -rubygems minimal_app.rb

如果没有意外的话,应该显示出一个框,虽然什么都没有,但我们也感到很高兴

5、好,再详细说一下
Java代码  收藏代码
  1. 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:
Java代码  收藏代码
  1. Frame.new(nil, -1"The Bare Minimum", Point.new(300,300), Size.new(800,100)).show()  


6、最后,
Java代码  收藏代码
  1. MinimalApp.new.main_loop  

创建一个App的实例,并调用它的mailloop方法来显示GUI,这个方法其实做了很多事,不再详细说了。

7、好,现在总结一下,我们一共做了这么几步:

require "wxruby"
include Wx
创建一个继承 App的类
覆盖一个方法 on_init()
创建一个实例
调用main_loop() 方法


三、有了一个大致的了解后,读一下这个吧:
http://wxruby./wiki/wiki.pl?Frames_(Part_1)
没有力气再翻译了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约