top

TOP  RSS  Login

Perl - wxPerl

PerlでGUIアプリケーションを作成することの出来るツールキット。wxWidgetsのラッパー。

インストール

Windows(NT, 2000, XP, Vista?)

ActivePerlのPerl5.8.*に対応しているらしいです。

  1. ダウンロードページから"ActivePerl 8xx with Unicode"のリンク先のzipファイルをダウンロードする。
  2. 解凍する。
  3. コマンドプロンプトから、ppm install Wx-0.26.ppdと実行する。パスが通っていない場合は、ppmの絶対パスを指定する。

Mac OS X

Mac OS X 10.4(Tiger)以降には標準でバンドルされている。 10.3(Panther)以前は、ダウンロードページからディスクイメージをダウンロード、マウントの後、wxPerl.pkg、wxWidgets.pkgからそれぞれインストールする。

その他

CPANからインストールする。cpan -i Alien::wxWidgets Wx(未確認)

サンプルコード

#!/usr/bin/env wxPerl

package MyFrame;
use Wx qw(:misc :font :color :sizer :textctrl :window :frame);
use Wx::Event qw(EVT_BUTTON EVT_TEXT_ENTER);
use base qw(Wx::Frame);

sub new
{
	my $self = shift->SUPER::new(
		undef, -1, 'wxPerl view file',
		wxDefaultPosition , [500, 400]
	) or return;
	$self->SetSizeHints(500,400);

	my $sizer = Wx::BoxSizer->new( wxVERTICAL );
	$self->SetSizer($sizer);

	my $csizer = Wx::BoxSizer->new( wxHORIZONTAL );
	$self->{lblFile} = Wx::StaticText->new($self, -1, "file: ");
	$self->{txtFile} = Wx::TextCtrl->new($self, -1, "$0",
		wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
	$self->{btnFile} = Wx::Button->new($self,-1,"view file");

	$csizer->Add($self->{lblFile}, 0, wxALL | wxALIGN_CENTER_VERTICAL, 4);
	$csizer->Add($self->{txtFile}, 1, wxALL , 4);
	$csizer->Add($self->{btnFile}, 0, wxALL , 4);

	$self->{txtRes} = Wx::TextCtrl->new($self, -1, "",
		wxDefaultPosition, wxDefaultSize, wxTE_READONLY | wxTE_MULTILINE);
	$self->{txtRes}->SetDefaultStyle(
		Wx::TextAttr->new(
			wxBLACK, wxWHITE,
			Wx::Font->new(10, wxDEFAULT, wxNORMAL, wxNORMAL)
		)
	);

	$self->{btnQuit} = Wx::Button->new($self, -1,"Quit");

	$sizer->Add($csizer, 0, wxEXPAND);
	$sizer->Add($self->{txtRes},1, wxALL | wxEXPAND, 4);
	$sizer->Add($self->{btnQuit}, 0 , wxALL | wxALIGN_RIGHT, 4);
	$sizer->AddSpacer(16);

	EVT_TEXT_ENTER($self, $self->{txtFile}->GetId, \&OnFile);
	EVT_BUTTON($self, $self->{btnFile}->GetId, \&OnFile);
	EVT_BUTTON($self, $self->{btnQuit}->GetId, sub {
		$_[0]->Close;
	});

	$self;
}


sub OnFile
{
	my $self = shift;
	$self->{txtRes}->Clear;

	my $file = $self->{txtFile}->GetValue;
	if(-e $file && open(my $f, "<", $file)){
		local($/) = undef;
		my $re = <$f>;
		close($f);
		$self->{txtRes}->SetValue($re);
	}else{
		$self->{txtRes}->SetValue("Error: file cannot open ($!)");
	}

	$self->{txtRes}->PositionToXY([0,0]);
}


package MyApp;
use base qw( Wx::App );

sub OnInit
{
	my $self = shift;
	my $frame = MyFrame->new;
	$self->SetTopWindow( $frame );
	$frame->Show( 1 );
}

package main;
MyApp->new->MainLoop;

Wxからエクスポートされるシンボル

wxDefaultPositionなどのシンボルは、デフォルトでは何もエクスポートされない。use Wx qw(:color);</code>などとしてインポートする必要がある。 Perl/wxPerl/エクスポートされるシンボル

リンク

Last modified:2008/03/07 02:23:44

0.077773