5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rubyでメニューバーを作る

Last updated at Posted at 2018-12-09

ここでは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でメニューバーを作成できます。
ちょっとした小物を作るときにどうぞ。

(おわり)

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?