概要
IronRubyを使い、WPFのウィンドウを表示するサンプルコードを掲載します。
環境
Windows 8.1(64ビット)
IronRuby 1.1
コード
コードは次の通りです。
# coding: utf-8
require 'PresentationFramework'
include System::Windows
window = Window.new
window.title = "IronRuby"
app = Application.new
app.run(window)
実行方法
[1] DOS窓を開き、wpf_show_window_01.rb
を実行します
> "C:\Program Files (x86)\IronRuby 1.1\bin\ir.exe" wpf_show_window_01.rb
[2] 実行すると空のウィンドウが表示されます。スクリプトを終了するにはウィンドウの×ボタンを押します
応用
ウィンドウにボタンを追加します。
# coding: utf-8
require 'PresentationFramework'
include System::Windows
include System::Windows::Controls
window = Window.new
window.title = "IronRuby"
window.Width="300"
window.Height="300"
button = Button.new
button.MinWidth = 150
button.Content = "あいさつ"
window.Content = button
button.Click do |sender, e|
MessageBox.Show("こんにちは")
end
app = Application.new
app.run(window)
このコードを実行するとボタンが1つだけあるウィンドウが表示されます。
ボタンを押すと、"こんにちは"と書かれたダイヤログが出ます。
WPFはXamlというXMLファイルに画面のレイアウトを作ることが多いですが、それもできます。
また、ここではWPFの話をしましたが、Formも利用可能です。
何がうれしいの?
IronRubyだけインストールした環境でGUIのプログラムが作れることです。つまり、導入が楽ということです。
RubyであればRuby-GNOME2などのGUIライブラリがありますが、追加のライブラリです。
実はこの記事は「IronRubyでExcelのマクロを実行する」というテーマの一環として作成しました。
Excelのマクロ実行環境はGUIエディタが付属しており、直感的にGUIを作成することができますが、この代わりの機能としてWPFを選択したというわけです。
なぜExcelのマクロ実行環境のGUIエディタを使わないのかというと、作られたウィンドウはリサイズすらできないなど柔軟性が低く、多少複雑なGUIを作ろうとしたときに行き詰る危険性があったからです。