Windows + PerlでGUIアプリを作る手段はいくつかあるが、一番手頃で機能もそれなりなのがWin32::GUI
を使うことだ。
Win32::GUI at SourceForge
http://perl-win32-gui.sourceforge.net/cgi-bin/index.cgi
ただ、これにはGUIビルダが付いていない。GUIの構築はあくまでスクリプト上で行わねばならないのが辛いところ。それを解決してくれるツールがThe GUI Loftだ。
The GUI Loft
http://www.darserman.com/Perl/Loft/
遙か5年以上前から更新が停止してるのがなんだかもの悲しいが、その分安定してるのだと考えよう。実際に最新のActivePerl 5.10.1 + Windows7環境でも問題なく動くのだから。
インストール
上に挙げたサイトから「Loft_binary.zip
」をダウンロードして解凍する。「PPM
」ディレクトリにモジュールが入っているので、それを手作業でインストールするinstall.bat
というファイル名のインストーラもあるのだが、-force
が付いてないので失敗する(ことが多い)。)
サイトが消滅してるっぽい?ので、緊急避難としてこのサイトにアップロードしておきました。
Loft_binary.zip のダウンロード
その後、公式サイトが復活したようなので、Loft_binary.zip
へのリンクは削除しておきました。
又消えた?っぽいので、リンクを復活しました。
C:\> cd TheGUILoft\PPM C:\TheGUILoft\PPM> ppm install -force AdHoc\Win32-GUI-AdHoc.ppd C:\TheGUILoft\PPM> ppm install -force Loft\Win32-GUI-Loft.ppd
そして「tgl.exe
」がGUIビルダだ。ダブルクリックすると起動する。
Hello, World!
簡単なアプリケーションを書いてみる。「tgl.exe
」を起動してテキストラベルとボタンを置いたところがこれ。
これを「testGUI.gld
」という名前で保存する。そして同じディレクトリに次のようなコードを書く。
testGUI.pl
#!/usr/bin/perl use strict; use warnings; use FindBin; use Path::Class; use Win32::GUI::Loft; my $gld = file( $FindBin::Bin, "testGUI.gld" ); my $design = Win32::GUI::Loft::Design->newScalar( scalar $gld->slurp, $gld->basename ); my $win = $design->buildWindow; $win->btnButton1->Change( -onClick => sub { -1 } ); $win->Show; Win32::GUI::Dialog;
- 7~9行目
-
ここで
gld
ファイルを読み込んでいる。newScalar
メソッドの使い方は次の通り。$design = Win32::GUI::Loft::Design ->newScalar( $scalar, $fileName ); # $scalar # gldファイルの中身。 # $fileName # gldファイルのファイル名。 # 後から$design->fileNameで参照できる。
- 10行目
- ウィンドウを生成。
- 11行目
- ボタンにイベントを設定する。書式は次の通り。
$obj->Change( -onイベント名 => サブルーチンリファレンス ); # イベント名 # Click, Activate, KeyUP, Timerなどなど。 # サブルーチンリファレンス # -1を返すとイベントループを抜ける。
- 12行目
- ウィンドウを表示する。
- 13行目
- イベントループに入る。
スクリプトを実行するとウィンドウが一つ現れるはずだ。「閉じる」ボタンを押すと終了する。
Webアプリケーション全盛の今、PerlでGUIアプリケーションを書くということにどれほど意味があるかわからない。でもUnix環境などで書きためたスクリプトを、Windowsユーザーでも簡単に使えるように出来るというのは便利だ。更に、PAR::Packer
でexe化することによってPerlをインストールしていない端末でも利用可能になるしね。
The GUI Loftのサイトがまたアクセスできなくなったみたいです。Loft_binary.zipを入手できなくて、お手数ですが、ファイルを送って頂けないでしょうか?
連絡ありがとうございます。再びリンクを復活させました。一応メールでもお送りしますね。
DELPHINUS さん
ありがとうございました!ダウンロードできました。
Win32::GUI at SourceForgeの方のインストールの仕方がわかりません。どうすれば良いでしょうか?
Win32::GUI は CPAN モジュールです。 cpanm Win32::GUI 等のコマンドでインストールできると思います。