glade3의 새로운 버전에서 ruby와 glade2를 사용하여 잠시 동안 사용자 인터페이스를 디자인했습니다. libglade 대신에 xml 파일을 생성하기 위해 gtkbuilder 형식을 사용할 수 있습니다.ruby glade/gtkbuilder 예제?
예가 있습니까? 나는 google를 찾았다. 그러나 나는 어떤 운도 가지지 않고 있었다!
glade3의 새로운 버전에서 ruby와 glade2를 사용하여 잠시 동안 사용자 인터페이스를 디자인했습니다. libglade 대신에 xml 파일을 생성하기 위해 gtkbuilder 형식을 사용할 수 있습니다.ruby glade/gtkbuilder 예제?
예가 있습니까? 나는 google를 찾았다. 그러나 나는 어떤 운도 가지지 않고 있었다!
당신은 바로 미리 작성된 자습서의 부족에,하지만 루비 gtkbuilder의 사용은 (같은 함수 이름, 전화 주문) 파이썬 거의 동일하므로 이러한 관심의 수 있습니다 -
GTK : : 빌더 모듈 : http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk%3A%3ABuilder
파이썬 코드 :
는import sys
import gtk
class TutorialTextEditor:
def on_window_destroy(self, widget, data=None):
gtk.main_quit()
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("tutorial.xml")
self.window = builder.get_object("window")
builder.connect_signals(self)
if __name__ == "__main__":
editor = TutorialTextEditor()
editor.window.show()
gtk.main()
출처 : http://www.micahcarrick.com/01-01-2008/gtk-glade-tutorial-part-3.html
IT는 SA입니다 나 정말. 다음은 빈틈없는 예입니다. http://snippets.dzone.com/posts/show/5251을 적절한 방법으로 대체하면 설정됩니다.
Ruby로 작성된 IDE가 있습니다. http://github.com/danlucraft/redcar/tree/master하지만 빌더를 사용하는지 확인하기 위해 주 파일을 찾을 수 없습니다.
정말 간단합니다 단지 습지와 GUI를 생성 (그리고 GtkBuilder로 저장) 다음과 루비에서 사용 :
이require 'rubygems'
require 'gtk2'
# require 'libglade2' #you don't need this anymore
builder = Gtk::Builder.new
builder.add_from_file(file)
builder.connect_signals {|handler| method(handler) }
첫 번째 줄은 창조의 책임이 빌더 객체를 생성 Glib::Objects
을 XML 정의에서 가져 와서 나중에 사용하기 위해 저장합니다 (사용자는 get_object(objname)
을 빌더로 호출 할 수 있으며 objname
으로 정의 된 위젯을 리턴합니다).
두 번째 줄은 실제로 인터페이스 정의를로드합니다. 여기서 file
은 gtkbuilder 파일의 경로입니다.
세 번째 줄은 다소 모호합니다. connect_signals
은 인터페이스에 정의한 모든 신호에 대해 한 번 제공된 블록을 호출합니다. handler
은 단지 문자열 (신호의 이름)입니다. 블록에서 proc (또는 call
으로 호출 할 수있는 모든 것)을 반환해야합니다 : handler
에 정의 된 신호가 발생할 때마다 해당 블록이 호출됩니다. 이 예제에서 블록은 신호와 동일한 이름을 가진 메소드를 반환하고있다 (간단히하기 위해 인터페이스에 정의 된 모든 신호에 대해 메소드가 있다고 가정한다).
또 다른 작업 버전은 객체 지향 형태 :
require 'gtk2'
class Builder < Gtk::Builder
def initialize xml
super()
self.add_from_string(xml)
self['main'].set_window_position Gtk::Window::POS_CENTER
self['main'].signal_connect('destroy') { Gtk.main_quit }
self['main'].show_all
self.connect_signals{ |handler| method(handler) }
end
def on_button_clicked w
case w.label
when 'quit'
Gtk::main_quit
else
puts "# on_button_clicked : " + w.label
end
end
def on_main_destroy
puts "# on_main_destroy"
Gtk::main_quit
end
end
if __FILE__ == $0
xml = <<EOI
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkWindow" id="main">
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="quit">
<property name="label">quit</property>
<signal name="clicked" handler="on_button_clicked" swapped="no"/>
</object>
</child>
</object>
</interface>
EOI
Gtk.init
builder = Builder.new(xml)
Gtk.main
end
레드 카는 그래서 모든 GTK와 관련이없는, SWT JRuby를 /의 상단에 구현된다. – Jacob
그들은 전환했기 때문입니다. 내 의견을 쓰는 시점에서 관련성이있었습니다. – Vadi