0

コードから「uninitialize GLib::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

これで、エラーが発生します

in `set_size_request': uninitialize GLib::Object

そこで、コードの一部を次のようにクラスの外に移動します。

main_window = MainWindow.new
    main_window.set_size_request(600, 300)

それから私は得る:

in `signal_connect': uninitialize GLib::Object

そこで、クラスを変更して、「signal_connect」メソッドを「set_resize_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

何?!何が起きてる?

4

2 に答える 2

4

super初期化フェーズでは、何よりも先に電話をかける必要があると思います。

def initialize
  super
  # Other code goes here
  # ...
end

また、追加することを忘れないでくださいGtk.main

main_window = MainWindow.new
# Don't forget this...
Gtk.main
于 2009-09-22T06:24:36.747 に答える
3

kell の回答に加えて、初期化の最初の 2 行にも注意してください。

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

決して使用されない 2 つのローカル変数を作成します。おそらくself.そこに追加したいでしょう。

于 2009-09-22T08:16:50.140 に答える