• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Shoes,RubyGUI!

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

今天逛InfoQ 的时候居然发现了Shoes,一个Ruby GUI 客户端。试了一下,比Ruby/Tk 好用。比如这个Tutorial 里面的例子。假设下面的代码保存在background.rb 里面。

 

  1. Shoes.app do  
  2.   background "#F3F".."#F90"  
  3.   title "Shoooes":top => 60,  
  4.     :align => "center",  
  5.     :font => "Trebuchet MS",  
  6.     :stroke => white  
  7. end  

 

 

安装Shoes 之后,用Shoes 打开这个.rb 文件就可以看到:

可能是由于刚出现的原因,响应还很慢(有人用"两百来行"编了个扫雷,鼠标点下去半天没反应)。但我相信它会引起又一轮Ruby 浪潮。

Shoes 并不是针对严谨的大规模GUI 应用,Shoes 应用一般都很灵巧。Shoes 的目标是让GUI 编程愉快、有趣。

Shoes 有本漫画教程NOBODY KNOWS SHOES,是why 大叔亲自写的。

一个GUI 应该包括显示和响应两方面元素。

Shoes 有10种元素用于显示:

  • para

para 是paragraph 的简写。你不必给它任何坐标或者尺寸参数。它会自动填充它所在的box。但可以为文本指定格式。比如:strong() 就是加粗,em() 是强调等。

 

  1. Shoes.app do  
  2.   para "Testing test test. ",  
  3.   strong("Breadsticks. "),  
  4.   em("Breadsticks. "),  
  5.   code("Breadsticks. "),  
  6.   strong(ins("Very good."))  
  7. end  

  

 

还可以指定字体大小:title 什么的或者直接指定(如:para "Oh, to fling and be flung.", :size => 48)

 

  1. Shoes.app do  
  2.   title "Title/n"  
  3.   subtitle "Subtitle/n"  
  4.   tagline "Tagline/n"  
  5.   caption "Caption/n"  
  6.   para "Para/n"  
  7.   inscription "Inscription/n"  
  8. end  

 

  • stacks & flows

stack 和flow 就是Shoes 里面的布局管理器。stack 把部件垂直摞在一起。flow 也是一种容器,只不过它在水平方向上摆放部件。如果一行摆不下了,它会另起一行。主窗口本身也是一个flow。flow 和stack 组合可以形成不同的布局。如果你是一个Web 开发者,你会发现它们很像CSS布局引擎。也不奇怪,Shoes 的作者why the lucky stiff说他深受Web 开发的影响。比如:后面你会看到的Shoes 的一种虚拟部件link。

 

  1. Shoes.app do  
  2.   @o = oval :top => 0, :left => 0,  
  3.   :radius => 40  
  4.   stack :margin => 40 do  
  5.     title "Dancing With a Circle"  
  6.     subtitle "How graceful and round."  
  7.   end  
  8.   motion do |x, y|  
  9.     @o.move width - x, height - y  
  10.   end  
  11. end  

 

当鼠标移动时,motion 会拿到你鼠标的坐标重新绘制圆。

  • button

一旦你点击button,就会激活它之后的block。

 

  1. Shoes.app {  
  2.   button("Trurl?") {  
  3.     alert("Klapaucius!")  
  4.   }  
  5. }  

 

还可以这么写:

 

  1. Shoes.app {  
  2.   @b = button("Trurl?")  
  3.   @b.click { alert("Klapaucius!") }  
  4. }  

 

button 还有个方法focus()。如果用户敲了回车,按钮就会按下(手册上这么说,但我还没试成)。

  • image

图片可以是PNG, JPEG 或者GIF;可以从本地文件系统,也可以从Web 上载入。还可以通过:height 和:width调整图片大小。

 

  1. Shoes.app do  
  2.   image("f:/Ruby.jpg":click=>"http://google.com")  
  3. end  

 

  • edit-line

text 把敲进编辑框的内容当作字符串返回。

 

  1. Shoes.app do  
  2.   @e = edit_line :width => 400  
  3.   button "O.K." do  
  4.     alert @e.text  
  5.   end  
  6. end  

 

 

如果是多行,可以用edit-box。

 

上一篇:
Ruby学习笔记-Hash发布时间:2022-07-14
下一篇:
[转]【听译大师说话】python 创始人访谈录 1: 关于 django 和 ruby ...发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap