2011-10-07 2 views
3

Ruby와 함께 glade3을 사용하려고하는데, 불행히도이 예제는 그리 많지 않습니다. 사용할 수있는 것을 살펴보면 다음 코드를 제시했지만 창은 표시되지 않으므로 누락 된 부분이 있습니다. 어떤 GtkBuilder 'show'메쏘드도없는 것처럼 보이기 때문에, 나는 그것을 보여주기 위해 무엇이 필요한지 잘 모르겠습니다. 누구든지이 일을하기 위해 내가해야 할 일을 알고 있습니까?ruby ​​glade3/gtkbuilder 예제

"hello.xml"은 GtkWindow와 버튼이있는 매우 간단한 glade3 xml 파일입니다.

#!/usr/bin/env ruby 

require 'rubygems' 
require 'gtk2' 

class HelloGlade 
    attr :glade 

    def initialize 
    if __FILE__ == $0 
     Gtk.init 
     builder = Gtk::Builder::new 
     builder.add_from_file("hello.xml") 
     builder.connect_signals{ |handler| method(handler) } # (I don't have any handlers yet, but I will have eventually) 
     Gtk.main() 
    end 
    end 

    def gtk_main_quit 
    puts "Gtk.main_quit" 
    Gtk.main_quit() 
    end 
end 


hello = HelloGlade.new 

hello.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<interface> 
    <requires lib="gtk+" version="2.24"/> 
    <!-- interface-naming-policy project-wide --> 
    <object class="GtkWindow" id="window1"> 
    <property name="can_focus">False</property> 
    <child> 
     <object class="GtkButton" id="button1"> 
     <property name="label" translatable="yes">button</property> 
     <property name="visible">True</property> 
     <property name="can_focus">True</property> 
     <property name="receives_default">True</property> 
     <property name="use_action_appearance">False</property> 
     </object> 
    </child> 
    </object> 
</interface> 

(편집)

헉, 그것은 항상 방법입니다. 질문을 올리면 나는 그 대답을 알아 낸다. 프로그램은 visualruby을 사용하면 쓰기가 훨씬 쉬울 것

... 
window = builder.get_object("window1") 
window.show() 
Gtk.main 
+1

를 추가해보십시오'<속성 이름 = "볼">''<개체 클래스 = "GtkWindow"ID = "번째 윈도"> 아래' – derp

답변

0

그건 : 나는 GtkBuilder에서 번째 윈도 객체를 얻고, 그 쇼() 메서드를 호출 할 필요가 있었다. 당신은 신호를 "볼 수"속성을 설정하거나 창을 닫습니다 코드를 작성하거나 연결할 필요가 없습니다 것입니다

class HelloGlade 

    include GladeGUI 

    def initialize 
    load_glade(__FILE__) 
    show_window() 
    end 

end 

:이 같은 코드를 볼 것입니다 무슨 입니다. 모든 것은 자동으로 수행됩니다. 이 많은 예 현재 위치 : 참

http://visualruby.net