【问题标题】:GTK Nested BoxesGTK 嵌套框
【发布时间】:2012-01-12 23:39:18
【问题描述】:

为了好玩,我决定学习 Ruby 并在 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)

我在想也许我不能打包一个还没有包含任何小部件的空盒子?我需要做些什么来显式实例化这些框吗?

【问题讨论】:

  • 看起来不错。查看this code 是否运行。这里似乎运行良好
  • 我真的想通了。这是一件愚蠢的事情。这是我调试代码的座右铭:“它总是很愚蠢”。我使用了一个名为 main_parition 的框并将其称为 main_partition。 Ruby 没有意识到我在尝试做什么,并创建了一个新的未实例化变量。我花了比我希望它必须注意到的时间更长的时间。我会发布我自己问题的答案,并在可能的时候关闭它。
  • 这句座右铭经常是对的! :)... 啊不同的发布代码。这是我首先想到的事情之一,检查你的 var 名称,我猜应该在评论中发布:\ ...很好,你想通了! ^^

标签: ruby gtk


【解决方案1】:

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

在这种情况下确实如此。在我的实际代码中,我使用了一个名为 main_parition 的框,这是 main_partition 的拼写错误,我在很长一段时间内都没有发现它。

所以要回答我自己的问题,是的,我没有实例化我的盒子,因为我使用的名称与我创建它时使用的名称略有不同。 Ruby 不会为您检查。

故事的寓意:始终确保您的变量名称是正确的,尤其是在不检查您的语言中。

【讨论】:

    【解决方案2】:

    您可能想尝试使用 visualruby 以避免手动编码您的盒子。它现在仍处于开发阶段,但我很快就会上传新版本。前往:

    http://visualruby.net

    【讨论】:

    • 嘿,谢谢你的链接!我前段时间问了这个问题,最终得到了我需要的东西,但这绝对是我要密切关注的事情,也许很快就会玩。
    • 谢谢。我目前正在与兼容性问题作斗争,所以 gem 还没有工作。但我每天都使用它,所以效果很好。
    猜你喜欢
    • 1970-01-01
    • 2019-05-21
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多