- 浏览: 223799 次
- 性别:
- 来自: 上海
最新评论
-
Mybeautiful:
碰到同样问题,谢谢分享。
Android shape中的padding无效 -
finger:
还有 Open3.capture 系列 和 Open3.pop ...
读《The Ruby Way》之运行外部程序 -
qianguming:
在eclipse中怎么配置的啊
Cannot run program jad -
luckyfenfen:
解决了我的问题,谢谢啦~
MySQL Plugin 'InnoDB' init function returned error. -
shasha_god:
请问一下,yum install zlib-devel
yu ...
在CentOS上安装git
rubynroll的《300行代码你能做什么》中,介绍了GtkSimpleLayout,实现了类似Shose的代码风格。
从http://github.com/rickyzheng/GtkSimpleLayout/tree/master下载了最新的代码,编译的时候却无法通过,显示SyntaxError。
调查了之后发现,原来Ruby 1.8中,define_method中不能使用block,Ruby 1.9中没有问题。因此对simple_layout.rb的代码进行了如下修改。
终于编译通过了。
简单的实验
竖排三个按钮
计算器布局
模仿http://the-shoebox.org/apps/126写的小程序
参考:
http://coderrr.wordpress.com/2008/10/29/using-define_method-with-blocks-in-ruby-18/
从http://github.com/rickyzheng/GtkSimpleLayout/tree/master下载了最新的代码,编译的时候却无法通过,显示SyntaxError。
引用
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': ./simple_layout.rb:105: syntax error, unexpected ',', expecting '|' (SyntaxError)
define_method(k) do |*args, &block|
^
./simple_layout.rb:487: syntax error, unexpected kEND, expecting $end from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from test1.rb:2
define_method(k) do |*args, &block|
^
./simple_layout.rb:487: syntax error, unexpected kEND, expecting $end from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from test1.rb:2
调查了之后发现,原来Ruby 1.8中,define_method中不能使用block,Ruby 1.9中没有问题。因此对simple_layout.rb的代码进行了如下修改。
105行: define_method(k) do |*args, &block| create_component(v, args, block) end ↓ eval <<-EOM def #{k}(*args, &block) create_component("#{v}", args, block) end EOM 432行: def create_component(component_class, args, block) @common_attribute ||= [] options = {} options = args.pop if args.last.is_a?(Hash) options.merge! @common_attribute.last if @common_attribute.last + w = eval("#{component_class}.new(*args)") layout_component(w, options, &block) end
终于编译通过了。
简单的实验
竖排三个按钮
require 'gtk2' require 'simple_layout' class MyWin < Gtk::Window include SimpleLayout::Base def initialize super add my_layout signal_connect('destroy') do Gtk.main_quit end end def my_layout vbox do button 'Mice' button 'Eagles' button 'Quail' end end end MyWin.new.show_all Gtk.main
计算器布局
require 'gtk2' require 'simple_layout' class MyWin < Gtk::Window include SimpleLayout::Base def initialize super add my_layout signal_connect('destroy') do Gtk.main_quit end end def my_layout vbox do with_attr :border_width => 3 do hbox do entry :id => :ent_input, :layout => [true, true, 5] end hbox do frame do label 'M', :set_size_request => [20, 20] end hbutton_box do button 'Backspace' button 'CE' button 'C' end end hbox do vbutton_box do button 'MC' button 'MR' button 'MS' button 'M+' end with_attr :layout => [true, true] do number_and_operators_layout end end end end end def number_and_operators_layout vbox do [ ['7', '8', '9', '/', 'sqt'], ['4', '5', '6', '*', '%'], ['1', '2', '3', '-', '1/x'], ['0', '+/=', '.', '+', '=']].each do |cols| hbox :layout => [true, true] do cols.each do |txt| button txt, :set_size_request => [20, 20], :layout => [true, true] end end end end end end MyWin.new.show_all Gtk.main
模仿http://the-shoebox.org/apps/126写的小程序
require 'gtk2' require 'simple_layout' class MyWin < Gtk::Window include SimpleLayout::Base def initialize super('Little Helper v0.4') add my_layout signal_connect('destroy') do Gtk.main_quit end register_auto_events() end def my_layout entry1 = nil vpaned do area_first do frame 'Awful numbers', :border_width => 5 do vbox do label 'Hours/week', :set_size_request => [200, -1] @entry1 = entry :layout => [false, false], :max_length => 20, :id => :entry1 label 'Money/hour', :set_size_request => [200, -1] @entry2 = entry :layout => [false, false], :max_length => 20, :text => '16', :id => :entry2 label 'Tax (in %)', :set_size_request => [200, -1] @entry3 = entry :layout => [false, false], :max_length => 20, :text => '20', :id => :entry3 end end end area_second do frame 'Rags or riches', :border_width => 5 do vbox do @lab1 = label '0.0' end end end end end def entry1_on_key_release_event(*_) @lab1.text = calculate.to_s end def entry2_on_key_release_event(*_) @lab1.text = calculate.to_s end def entry3_on_key_release_event(*_) @lab1.text = calculate.to_s end def calculate @entry1.text.to_f * @entry2.text.to_f * ((100-@entry3.text.to_f)/100.0) * 4.3 end end MyWin.new.show_all Gtk.main
参考:
http://coderrr.wordpress.com/2008/10/29/using-define_method-with-blocks-in-ruby-18/
发表评论
-
ActiveRecord::Base.update 的 alias_method_chain 顺序变化
2010-07-19 11:01 1284alias_method_chain有非常强大的功能,使得我们 ... -
Ruby:按照插入的顺序取出要素
2010-07-12 00:37 1057利用pseudohash库的PseudoHash类,可以实现按 ... -
Ruby时区转换
2010-07-11 22:27 2492要将MySQL数据库中的数据,由日本服务器转移到美国服务器。日 ... -
项目中使用的Rails版本升级 2.2.2=>2.3.8
2010-06-25 15:40 1563项目中使用的Rails版本是2.2.2,想升级到到最新的2.3 ... -
搭建一个自己的Ruby博客系统(toto+heroku+免费域名)
2010-06-21 02:53 8421要有自己的博客系统,首先要有自己的空间 Heroku是著名的R ... -
用Ruby播放音乐
2010-06-19 03:53 1785《The Ruby Way》第14章,记述了一段代码可以调用W ... -
读《The Ruby Way》之运行外部程序
2010-06-17 02:32 1669西班牙输了,这次世界杯强队的表现真是没话可说了。 Ruby里 ... -
读《The Ruby Way》之线程
2010-06-14 19:08 1098经常提及线程,但是用线程编的程序真的是不多。仔细的学习一下吧。 ... -
读《The Ruby Way》之数值计算
2010-06-13 23:18 887世界杯至今为止的比赛都看了,不过很多比赛都是在三心二意的看,凌 ... -
读《The Ruby Way》之正则表达式
2010-06-12 22:19 954世界杯开幕了,看了三场球。南非1-1墨西哥,法国0-0乌拉圭, ... -
读《The Ruby Way》之格式化字符串
2010-06-12 00:06 1757一边看世界杯,一边看书。 这一章介绍了很多的字符串处理函数 ... -
读《The Ruby Way》
2010-06-10 21:21 972从06年10月开始接触Ruby,眨眼间已经过了3年半了。虽然用 ... -
Ruby GUI编程
2010-06-08 19:38 3166Ruby比较成熟的GUI绑定库 ... -
Rails国际化(i18n)
2010-06-07 21:15 5479很早就知道国际化,就知道i18n,却不知道是什么原因。原来in ... -
更新rails的时候发生错误,Invalid Gem format
2009-02-02 17:18 2160今天把rails的版本升级到2.2.2的时候,发生了以下错误。 ... -
让Rails的数据库连接更快--把Ruby/MySQL升级到2.8
2008-12-12 17:46 1695装了C版本的MySQL数据库适配器以后,Rails工程的性能确 ... -
把Rails2.1的默认数据库由sqlite3改回mysql
2008-12-12 16:23 1483装了Rails2.1.2,新生成工程的时候,默认数据库居然是s ... -
TypeError: iterable argument required
2008-11-27 21:25 3578执行ruby script/console,可是报错 ruby ... -
cache_fu的关联补丁(belongs_to, has_one)
2008-09-08 23:15 1106为了缓解数据库服务器 ... -
日本Ruby会议2008(6/20-6/22)
2008-06-21 10:48 1175日本Ruby会议2008,于6/20-6/22在茨城县筑波市举 ...
相关推荐
ui设计试用期工作总结.docx
MTK 中制作UI工具,这是mtk软件开发者想要的资料
C# 包括C#的界面换皮肤和dll的引用,制作绚丽的界面效果
Office Word,Excel Tab页制作工具 customUI
wow UI制作入门指南,一本很适合初学者的文档,对魔兽插件有兴趣的朋友可以看下。
UI界面设计与制作(全彩慕课版)——PPT.rar
机器人流程自动化工具uipath中文使用手册,包括工作流程、ui自动化、项目组织、自动化生命周期
WOW UI制作入门,比较简单的介绍了制作WOW UI的步骤及所需要的工具和知识,适合想做UI的初学者
UI项目UI项目UI项目UI项目UI项目UI项目UI项目UI项目UI项目UI项目UI项目UI项目UI项目
58商铺全新UI试客试用平台网站源码 带红包 带分销 服务器上备份的,完完整整。功能是很全的,PHP开发的
NGUI是Unity的一个插件,使用它来制作你的游戏UI必定将事半功倍
windows DirectUI界面制作教程-这是目前网上能找到的最详细的教程了+源代码 windows任务栏也是用此技术制作的 qq,微信,office,MSN的界面都是用此技术制作的
里面包含用UGUI制作对话框UI的预设体和代码,用来管理游戏中大量存在的弹框,处理之间的层级关系和触控屏蔽等操作
利用脚本制作游戏UI介绍
是一款配合.net使用的超级uI,可以通过拖住,实现UI的设计,不需要Ajax,,js,CSS.实现页面无刷新
新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付新UI易支付...
您可以从Airy UI预设中选择动画,也可以非常快速地使用Airy UI制作自己的自定义动画。 Airy UI还使您只需单击即可轻松设置UI元素的锚点,此外还具有专业的ESC和“后退”按钮功能来隐藏和关闭菜单。 通用的UI节省了...
UE4 UI制作
python万年历有农历节气pyqt5制作UI界面,参考链接:https://blog.csdn.net/babyai996/article/details/117212795
曲面UI插件 Curved UI