hideto 发表于 2013-1-15 03:13:56

穿鞋上路

Shoes是Ruby的一个简单的桌面程序库

下载Shoes,将shoes.exe加入path
看看Hello World例子hello.rb:
Shoes.app do button "Press Me" doalert "Hello Shoes!" endend
运行shoes hello.rb即可

再看看自带的计算器的例子:
class Calcdef initialize    @number = 0    @previous = nil    @op = nilenddef to_s    @number.to_send    (0..9).each do |n|    define_method "press_#{n}" do      @number = @number.to_i * 10 + n    endenddef press_clear    @number = 0end{'add' => '+', 'sub' => '-', 'times' => '*', 'div' => '/'}.each do |meth, op|    define_method "press_#{meth}" do      if @op      press_equals      end      @op = op      @previous, @number = @number, nil    endenddef press_equals    @number = @previous.send(@op, @number.to_i)    @op = nilendendnumber_field = nilnumber = Calc.newShoes.app :height => 250, :width => 200, :resizable => false dobackground "#EEC".."#996", :radius => 5,    :top => 2, :left => 2, :width => -4, :height => -4stack :margin => 4 do    stack :margin => 8 do      number_field = text "<b>#{number}</b>"    end    flow :width => 218, :margin => 4 do      %w(7 8 9 / 4 5 6 * 1 2 3 - 0 Clr = +).each do |btn|      button btn, :width => 46, :height => 46 do          method = case btn            when //: 'press_'+btn            when 'Clr': 'press_clear'            when '=': 'press_equals'            when '+': 'press_add'            when '-': 'press_sub'            when '*': 'press_times'            when '/': 'press_div'          end                  number.send(method)          number_field.replace "<b>#{number} </b>"      end      end    endendend
用Block、Closure的方式来开发桌面程序,代码非常的清晰简洁

Shoes目前支持OS X、XP、Vista、Debian、Ubuntu,跨平台做的也非常不错
页: [1]
查看完整版本: 穿鞋上路