メニューウィジェット


■ メニュー関連のウィジェット

まず例として、前出のテキストウィジェットの例に下図のような メニューバーを付けてみます。

この例のメニュー部分は、次の 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

プログラムの説明


■ メニューの選択に応じた動作を設定する

先ほどの例では、メニューは作ったものの、 アイテムを選択しても何も起こりませんでした。 何かの動作をさせるには、メニューアイテムの 'activate' シグナルを使います。

例えば、先ほどの例でメニューから 'Quit' を選択すると終了するには次のようにします。

item3.signal_connect('activate')
  exit
}
次へ
[TOP] [ML topics] [GTK] [Today's goo analyzer]
Written by akaishi@ruby.freak.ne.jp