スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ruby/Gtk2のインストール

RubyでGUIプログラミングを行うため、JRubyでJavaのSwingを利用した方法とRuby/Gtk2を使用するやり方を試してみた。



JRubyに関してはまた今度記すとして、今回はWindowsにRuby/Gtk2のインストールしたときのことと、実際にスクリプトを実行したときに詰まったこと、そしてその解決法を記す。



 まず、http://sourceforge.net/projects/ruby-gnome2/ からインストーラであるruby-gnome2-x-i386-mswin32.exe(xはバージョン)をダウンロードする。


 あとは、これをダブルクリックして、ダイアログの指示通りにインストールすればいい。(途中でRubyのインストールしたパスの指定を求められるので、正しく指定する)
 あとはパスの指定などはする必要がなく、これでインストールは終了である。



 きちんとインストールされたかどうかを、irbで確かめてみる。
コマンドプロンプトを起動し、以下のように入力していく。

$irb
$irb(main):001:0>require 'gtk2'
=>true
$irb(main):002:0>

requireの後にtrueと出力されたら、ここまでは正常にインストールできている。



 試しに、簡単なスクリプトを作って実行させてみる。
まず、以下の様なRubyスクリプトを作る。

# sample_gtk2_01.rb
require 'gtk2'

window = Gtk::Window.new
window.show

Gtk.main

そして、作ったスクリプトを実行する。

ruby_gtk2_01.jpg

このようなウィンドウが表示されると成功。



 次に、プログラミングの勉強をする上で恒例となっている"Hello, world!"を、ボタンを実装することで行う。


 以下のようなRubyスクリプトを新しく作成する。

# sample_gtk2_02.rb
require 'gtk2'

button = Gtk::Button.new("こんにちは")
button.signal_connect("clicked"){
puts "Hello, world!"
}

window = Gtk::Window.new
window.signal_connect("delete_event"){
puts "delete event occurred"
false
}
window.signal_connect("destroy_event"){
puts "destroy event occurred"
Gtk.main_quit
}

window.border_width = 10
window.add(button)
window.show_all

Gtk.main


このスクリプトを実行すると、下に表示したようなボタンを持ったウィンドウが表示されるだろう。
ruby_gtk2_02.jpg

ここで、ボタンにラベル("こんにちは")が表示されえていないことがわかる。また、プロンプト上に警告文が表示されているだろう。
これは、今使用している日本語文字コードに対応していないために起こる問題だ。この問題の解決方法がわからなくて、半日ほど詰まっていたが、いろいろ調べながら試した結果うまくいったため、その方法を記しておく。


 Ruby-Gnome2の公式ページ(http://ruby-gnome2.sourceforge.jp/)の「日本語の扱いと国際化」のところで、ソースコード中に

$KCODE = 'u'

を記述する方法や、iconvを使用する方法が説明してあったが、どちらもうまくいかなかった。
 それで、ボタンのラベルなどには推奨されていなかった方法だが、その中のGLib.convertを使用することでうまくラベルが表示された。
 下に、その改善を行ったコードを記す。

# sample_gtk2_03.rb
require 'gtk2'

button = Gtk::Button.new(GLib.convert("こんにちは", "utf-8", "sjis"))
#GLib.convert内の"sjis"ノ部分は、スクリプトを作成したときの文字コードを指定する。
button.signal_connect("clicked"){
puts "Hello, world!"
}

window = Gtk::Window.new
window.signal_connect("delete_event"){
puts "delete event occurred"
false
}
window.signal_connect("destroy_event"){
puts "destroy event occurred"
Gtk.main_quit
}

window.border_width = 10
window.add(button)
window.show_all

Gtk.main


このスクリプトを実行すると、次のようなウィンドウが表示される。
ruby_gtk2_03.jpg

日本語のラベルが確認できるだろう。
ちなみに、プログラム内で登場するクラスやメソッドなどの説明は、今回は省く。




これで、ラベルやウィンドウ名に日本語を使用する方法がわかった。




続きを読む

スポンサーサイト
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。