なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

オブジェクト指向Tk

WxPerlの真似をしてPerl/Tkでオブジェクト指向GUIプログラミングしてみる。処理用のモジュールを作ってフレームクラスから呼べば可読性がたかまれタカマル。

メインのソースから

#!C\strawberry\perl\bin\perl
#
# main.pl

use utf8;
use strict;
use TkFrame;

my $tkobj = TkFrame->new();
$tkobj->MainLoop;

フレーム用のクラスを呼び出す

#!C\strawberry\perl\bin\perl
#
# TkFrame.pm

use utf8;
use strict;
use Tk;

package TkFrame;

sub new {
    my $mw = MainWindow->new;
    $mw->title("Hello World");
    $mw->Button(-text => "Done", -command => sub { exit })->pack;
}

1;


ourで変数を宣言すればクラス変数みたいなこともできる。Perlは自由ですね。

#!C\strawberry\perl\bin\perl
#
# Main.pl
#

use utf8;
use strict;
use TkFrame;

my $tkobj = TkFrame->new();
$tkobj->MainLoop;

フレームを呼び出す

#!C\strawberry\perl\bin\wperl
#
# TkFrame.pm
#

use utf8;
use strict;
use Tk;

package TkFrame;

our $mw;
our $txt;

sub new {
	$mw = MainWindow->new;
	$mw->title('Perlのテスト');
	$mw->Button(
		-text    => "Done",
		-font    => [ 'Osaka', 12 ],
		-command =>\&hello
	)->pack;
	$txt = $mw->Text(
		-width  => 40,
		-height => 10,
		-font   => [ 'Osaka', 12 ]
	)->pack;
}

sub hello {
	$txt -> insert ('end', "Hello!");
}

1;