2012-01-12 60 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不會爲你檢查。

道德故事:總是確保你的變量名是正確的,特別是在不檢查你的語言中。