2007-12 / 2007-12-20

前のエントリ: そろそろ [diary]
次のエントリ: ふっくら [diary]

Perl TK
2007-12-20-1 / カテゴリ: [programming][perl] / [permlink]

VC連携用に小物をいろいろ作ったのでメモ
cygwin perl だと X が必要なので、ActivePerl の方が楽かも。5.8 で確認。標準モジュールのみでOK

ラベル・テキスト入力・ボタンを持つウィンドウの作成
PerlTk

#!/usr/bin/perl -w

use Tk;
use strict;

my $mw = MainWindow->new;
my $text = "";

$mw->Label(
	   -text => 'test'
	  )->pack(-anchor=>'w');

$mw->Entry(
	   -textvariable => \$text
	   )->pack();

$mw->Button(
	    -text    => 'OK',
	    -command => sub { print "$text\n" },
           )->pack();

MainLoop();
まず、MainWindow->new でインスタンスを生成。
テキストを作成するには Label() メソッド。
テキスト入力欄を作成するには Entry() メソッド。
ボタンを作成するには Button() メソッド。
これらのラベルやボタンをウィジェットと言い、作成したウィジェットを画面に配置(表示)するには、pack() をコールする。
$label = $mw->Label(-text => 'test');
$label->pack();
という書き方でもOK。
で、MainLoop() でイベントループをスタートさせる。

Entry() では -textvariabel オプションで、入力した文字列を格納する変数のリファレンスをセット。
Button() では、-command オプションで、ボタン押下時に実行するサブルーチン(コールバック関数)のリファレンスをセット。別部分に記述するなら
$mw->Button(-command => \&press_btn);
sub press_btn {
  ...
}
な感じで。

オプション無しで pack() すると、オートでセンタリングされるので、左寄せとかしたければ、-anchor オプションに w(west), e(east) 等を指定する。

レイアウトを気にしなくて良いちょいプロなら、こんくらいでいける。

つづく?

てか、本家が5.10になったのに追従して、ActivePerlも5.10になってる…
前のエントリ: そろそろ [diary]
次のエントリ: ふっくら [diary]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12