无法解决的Ruby Gtk2错误

无法解决的Ruby Gtk2错误,ruby,gtk,gtk2,Ruby,Gtk,Gtk2,我的代码中不断出现“uninitializeglib::Object”错误 代码如下: class MainWindow < Gtk::Window def initialize title = "I'm The Title Of An Application! Yay!" border_width = 10 set_size_request(600, 300) signal_connect("destroy") {

我的代码中不断出现“uninitializeglib::Object”错误

代码如下:

class MainWindow < Gtk::Window
    def initialize
        title = "I'm The Title Of An Application! Yay!"
        border_width = 10
        set_size_request(600, 300)

        signal_connect("destroy") { Gtk.main_quit }

        @vbox = Gtk::VBox.new(false, 10)

        add(@vbox)
        show_all
    end
end

main_window = MainWindow.new
因此,我将这些代码移到类外,如下所示:

main_window = MainWindow.new
    main_window.set_size_request(600, 300)
然后我得到:

in `signal_connect': uninitialize GLib::Object
因此,我将其更改为我的类,并将“signal\u connect”方法移到带有“set\u resize\u request”的类之外,如下所示:

main_window = MainWindow.new
    main_window.set_size_request(600, 300)
    main_window.signal_connect("destroy") { Gtk.main_quit }
它给了我:

in `add': uninitialize GLib::Object
瓜尔!我再次改变它

main_window = MainWindow.new
    main_window.set_size_request(600, 300)
    main_window.signal_connect("destroy") { Gtk.main_quit }
    main_window.add(@vbox)
现在这个

in `show_all': uninitialize GLib::Object
因此,我再次从类中删除该方法,并将其放在类之外

main_window = MainWindow.new
    main_window.set_size_request(600, 300)
    main_window.signal_connect("destroy") { Gtk.main_quit }
    main_window.add(@vbox)
    main_window.show_all
也许。。。只是这一次可能会有用,所以我希望一切顺利,然后再次运行代码

in `set_size_request': uninitialize GLib::Object

什么?!这是怎么回事?

我认为在初始化阶段,您必须先调用
super

def initialize
  super
  # Other code goes here
  # ...
end
也不要忘记添加
Gtk.main

main_window = MainWindow.new
# Don't forget this...
Gtk.main

除了khell的回答之外,您还应该注意初始化的前两行:

    title = "I'm The Title Of An Application! Yay!"
    border_width = 10
创建两个从未使用过的局部变量。您可能需要在那里预先添加
self.

    title = "I'm The Title Of An Application! Yay!"
    border_width = 10