六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 60|回复: 0

穿鞋上路

[复制链接]

升级  84.33%

137

主题

137

主题

137

主题

举人

Rank: 3Rank: 3

积分
453
 楼主| 发表于 2013-1-15 03:13:56 | 显示全部楼层 |阅读模式
Shoes是Ruby的一个简单的桌面程序库

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

再看看自带的计算器的例子:
class Calc  def initialize    @number = 0    @previous = nil    @op = nil  end  def to_s    @number.to_s  end    (0..9).each do |n|    define_method "press_#{n}" do      @number = @number.to_i * 10 + n    end  end  def press_clear    @number = 0  end  {'add' => '+', 'sub' => '-', 'times' => '*', 'div' => '/'}.each do |meth, op|    define_method "press_#{meth}" do      if @op        press_equals      end      @op = op      @previous, @number = @number, nil    end  end  def press_equals    @number = @previous.send(@op, @number.to_i)    @op = nil  endendnumber_field = nilnumber = Calc.newShoes.app :height => 250, :width => 200, :resizable => false do  background "#EEC".."#996", :radius => 5,    :top => 2, :left => 2, :width => -4, :height => -4  stack :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 /[0-9]/: '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    end  endend
用Block、Closure的方式来开发桌面程序,代码非常的清晰简洁

Shoes目前支持OS X、XP、Vista、Debian、Ubuntu,跨平台做的也非常不错
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表