2009-09-22 5 views
0

내 코드에서 '초기화되지 않은 GLib :: Object'오류가 계속 발생합니다.해결할 수없는 Ruby Gtk2 오류

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

: 나는

in `set_size_request': 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 `signal_connect': uninitialize GLib::Object 

그래서 나는 나의 클래스는 다음과 같습니다 'set_resize_request'와 클래스 외부에서 'signal_connect'방법을 이동 변경 :

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 

무엇을?! 무슨 일 이니? 또한

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

Gtk.main를 추가하는 것을 잊지 마세요 :

답변

4

나는 당신이 초기화 단계에서 아무것도하기 전에 super를 호출하는 생각

는 또한
main_window = MainWindow.new 
# Don't forget this... 
Gtk.main 
3

도해야의 당신을 대답 khell하기 처음 두 행을 초기화하십시오.

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

사용되지 않는 두 개의 로컬 변수를 만듭니다. 거기에 self.을 앞에 붙이고 싶을 것입니다.