Ruby
gtk
glade

Rubyでメニューバーを作る

ここではGladeとRuby/Gtkを使って、メニューバーを作ってみます。


完成イメージ

fuga.gif


準備


  • gtk3のインストール


    • gem install gtk3



  • gladeのインストール


    • Mac: brew install glade

    • Ubuntu: apt install glade

    • Win: pacman -S なんちゃらglade



WindowsはMSYS2のpacmanで新しいバージョンのgladeをインストールできます。


gladeの操作手順

gladeを起動します

1. 新しいプロジェクトを作成します。

screenshot4.png

2. トップレベルから GtkWindow を作ります。

screenshot5.png

3. GtkWindowのIDを win に設定します。

4. GtkWindowの中に、コンテナ > GtkMenuBar を配置します。

5. 配置したGtkMenuBarを右クリックしてEdit...を選択します。

(Macで右クリックが動かない場合は左下のアイコンからEditを選択(通常 ▼ の中にある))

6. メニューバーの編集の画面から[+]でメニューを追加していきます。今回は、型に標準を選択して、ラベルに都道府県名を入力しました。

screenshot.png

GtkMenuItemのシグナル"active"にハンドラーの名前を登録します。これはあとでRubyの同名のメソッドに接続します。ここでは "on_shimane_clicked" としました。

screenshot2.png

すべて終わったら、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

fuga03d-47.jpg

島根県が選択されました

こんな感じでGUIポチポチでRubyでメニューバーを作成できます。

ちょっとした小物を作るときにどうぞ。

(おわり)