2012-01-12 43 views
1

为了好玩,我决定拿起Ruby并在GTK中做一些事情。这对我来说几乎是全新的,但我已经掌握了基本知识。GTK嵌套盒

目前,我无法弄清楚如何在另一个盒子中正确嵌套一个盒子。例如,我沿着线的东西:

window = Gtk::Window.new 

main_box = Gtk::HBox.new(false, 2) 
left_box = Gtk::VBox.new(false, 2) 
right_box = Gtk::VBox.new(false, 2) 

main_box.pack_start(left_box, true, true, 0) 
main_box.pack_start(right_box, true, true, 0) 

window.add(main_box) 

关闭我的头顶,这样的事情应该创建奠定了并排侧两个纵盒子的布局。尝试打包时,出现错误。

undefined method 'pack_start' for nil:NilClass (no method error) 

我在想也许我不能打包一个空的框,还没有包含任何小部件?有什么我需要做的明确实例化盒?

+0

看起来不错。查看[此代码](http://pastebin.com/nJtRs4Y0)是否运行。它似乎在这里运行得很好 – 2012-01-13 03:20:40

+0

我其实已经想通了。这是愚蠢的。这是我调试代码的座右铭:“它总是愚蠢的”。我使用的是一个名为main_parition的盒子,并将其作为main_partition调用。 Ruby没有意识到我正在尝试做什么,并创建了一个新的未被证实的变量。花了我很多时间,我希望它不得不注意到这一点。我会在我自己的问题上发布答案,并在我能够的时候关闭它。 – KChaloux 2012-01-13 03:28:10

+0

这个座右铭经常是相当正确的! :)...啊不同的发布代码。那是我想到的第一件事情,检查你的var名称,应该在评论中发布我猜:\ ...好,你想出来了! ^^ – 2012-01-13 03:29:47

回答

0

你可能想尝试visualruby,以避免手动编码你的盒子。目前它仍处于开发阶段,但我很快就会上传一个新版本。转到:

http://visualruby.net

+0

嘿,谢谢你的链接!之前我问过这个问题,并最终得到了我需要的手工完成的东西,但这绝对是我要留意的事情,也许很快就会有一段时间了。 – KChaloux 2012-03-18 08:03:41

+0

谢谢。目前我正在与兼容性问题作斗争,所以宝石还没有工作。但我每天都用它,所以它效果很好。 – user1182000 2012-03-20 01:22:18

+0

更新:它的工作与Windows和Linux很好 – user1182000 2012-05-28 02:11:07

1

当谈到调试时,我有一个座右铭。 It's always something stupid

而在这种情况下是这样。在我的实际代码中,我使用的是一个名为main_parition的框,拼写错误main_partition,我没有理解这个不可思议的长时间。

因此,为了回答我自己的问题,是的,我没有实例化我的盒子,因为我用与它创建的名称稍微不同的名称来调用它。而Ruby不会为你检查。

道德故事:总是确保你的变量名是正确的,特别是在不检查你的语言中。