ここではGladeとRuby/Gtkを使って、メニューバーを作ってみます。
完成イメージ
準備
- gtk3のインストール
- gem install gtk3
- gladeのインストール
- Mac: brew install glade
- Ubuntu: apt install glade
- Win: pacman -S なんちゃらglade
WindowsはMSYS2のpacmanで新しいバージョンのgladeをインストールできます。
gladeの操作手順
gladeを起動します
- 新しいプロジェクトを作成します。
- トップレベルから GtkWindow を作ります。
- GtkWindowのIDを
win
に設定します。 - GtkWindowの中に、コンテナ > GtkMenuBar を配置します。
- 配置したGtkMenuBarを右クリックしてEdit...を選択します。
(Macで右クリックが動かない場合は左下のアイコンからEditを選択(通常 ▼ の中にある)) - メニューバーの編集の画面から[+]でメニューを追加していきます。今回は、型に標準を選択して、ラベルに都道府県名を入力しました。
GtkMenuItemのシグナル"active"にハンドラーの名前を登録します。これはあとでRubyの同名のメソッドに接続します。ここでは "on_shimane_clicked" としました。
すべて終わったら、sample.glade などとして保存します。中身はXMLファイルです。
これはサンプルです。都道府県を全部手打ちするのは意外と面倒なのでおすすめしません。
※Gladeはやや不安定なようです。自分の使っている環境でクラッシュしやすいなと感じたら、中央のウィジェットはあまり触らずに左側のペインから部品を選択するようにすると落ちにくいです。
Rubyのスクリプトを書く
こんな感じです。
require 'gtk3'
def on_shimane_clicked
puts "島根県が選択されました"
end
b = Gtk::Builder.new(file: "sample.glade")
w = b.get_object "win"
b.connect_signals{|handler| method(handler)}
w.signal_connect(:destroy){Gtk.main_quit}
w.show_all
Gtk.main
実行
ruby menu.rb
島根県が選択されました
こんな感じでGUIポチポチでRubyでメニューバーを作成できます。
ちょっとした小物を作るときにどうぞ。
(おわり)