25.i. GTKの利用

目次へ 前の項目へ次の項目へ

ここまでいろいろと計算プログラムを作って試してきました。理数系に在籍する学 生さんならば、このようなことの積み重ねで研究に役立つプログラミング技術を習 得していくわけですが、それだけではこの講習会としては面白くありません。そこ で、ちょっと目先を変えて今までとはちょっと違うプログラミングをしてみましょ う。

この節のタイトルにあるGTKというのは今まで何度か出てきましたが、GNOMEデスク トップ環境を構築するためのツールキットです。ツールキットとは、ボタンやウィ ンドウ、ファイルメニューのデザインなどを一から作り始めなくても、それを使え ば呼び出すだけで使えるキットのことです。RubyからのこのGTKを利用できますの で、ほんの一部ですが、ボタンを作って動作させてみましょう。

今回のスクリプト1)は次のようになります。

require 'gtk'

window = Gtk::Window.new
window.signal_connect("delete_event") do
  Gtk.main_quit
end
button = Gtk::Button.new("Click here!")
button.signal_connect("clicked") do
  puts("Hello, world!")
end
window.add(button)
window.show_all

Gtk.main

今度のは少し長いスクリプトです。これを button.rb として保存し、ター ミナルで実行してみましょう。

$ ruby button.rb

小さなウィンドウを立ち上げるプログラムなので、気をつけないとどこにボタンが 表示されたかわからないかもしれませんが、画面のどこかに図25-1のようなボタン ウィンドウが表示されたはずです。

ボタンをクリックするとどのようなことが起こるのか確かめてみましょう。クリッ クするたびに、ターミナルに Hello, world! と表示されます。ウィンド ウ枠のクローズボタン (×印) をクリックすると終了します。

スクリプトの詳しい動作は省略しますが、全体の流れは、以下のようになっていま す。

  1. GTKライブラリの読み込み
  2. ウィンドウの定義と動作指定
  3. ボタンの定義と動作指定
  4. ウィンドウとボタンの表示
  5. main 関数の実行

より実用的なスクリプト2)も紹介しておきます。試してみてください。

require 'gtk'

window = Gtk::Window.new
window.set_title("Digital clock")
window.show

label = Gtk::Label.new("")
window.add(label)
label.show


def window.delete_event(e)
  Gtk.main_quit
end

Thread.start do
  loop do
    time = Time.now
    str = time.strftime("%m/%d (%a)\n%H:%M:%S")
    label.set_text("#{str}")
    sleep(1)
  end
end

Gtk.main

参考文献

1)五十嵐宏、「Software Design」2001.3 pp.135, 技術評論社
2)五十嵐宏、「Linux Japan」2001.7 pp.27、五橋研究所


ページの先頭へ目次へ 前の項目へ次の項目へ