まず例として、前出のテキストウィジェットの例に下図のような メニューバーを付けてみます。
この例のメニュー部分は、次の 3つのウィジェットで構成されます。
プログラム menu.rb:
require 'gtk' window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL) mbar = Gtk::MenuBar.new filemitem = Gtk::MenuItem.new('File') filemitem.show filemenu = Gtk::Menu.new item1 = Gtk::MenuItem.new('Open') item1.show filemenu.add item1 item2 = Gtk::MenuItem.new('Save') item2.show filemenu.add item2 item3 = Gtk::MenuItem.new('Quit') item3.show filemenu.add item3 filemitem.set_submenu filemenu mbar.append filemitem mbar.show vadj = Gtk::Adjustment.new(0,0,0,0,0,0) text = Gtk::Text.new(nil, vadj) vs = Gtk::VScrollbar.new(vadj) text.set_editable true hbox = Gtk::HBox.new(false, 0) hbox.pack_start text, true, true, 0 hbox.pack_start vs, false, false, 0 vbox = Gtk::VBox.new(false, 0) vbox.pack_start mbar, false, false, 0 vbox.pack_start hbox, true, true, 0 vbox.show window.add vbox text.show vs.show hbox.show window.show Gtk.main
プログラムの説明
mbar = Gtk::MenuBar.new
filemitem = Gtk::MenuItem.new('File')
filemenu = Gtk::Menu.new
item1 = Gtk::MenuItem.new('Open')
item1.show
filemenu.add item1
filemitem.set_submenu filemenu
mbar.append filemitem
先ほどの例では、メニューは作ったものの、 アイテムを選択しても何も起こりませんでした。 何かの動作をさせるには、メニューアイテムの 'activate' シグナルを使います。
例えば、先ほどの例でメニューから 'Quit' を選択すると終了するには次のようにします。
item3.signal_connect('activate') exit }次へ