Perl - wxPerl
PerlでGUIアプリケーションを作成することの出来るツールキット。wxWidgetsのラッパー。
インストール
Windows(NT, 2000, XP, Vista?)
ActivePerlのPerl5.8.*に対応しているらしいです。
- ダウンロードページから"ActivePerl 8xx with Unicode"のリンク先のzipファイルをダウンロードする。
- 解凍する。
- コマンドプロンプトから、
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/エクスポートされるシンボル
リンク
- wxPerl - Let's wxWidgets
- wxWidgets 2.8.7: A portable C++ and Python GUI toolkit - wsWidgetsのオンラインドキュメント
- wxPython - Python向けのドキュメントであるが、Perlに置き換えて読んで参考にする
Last modified:2008/03/07 02:23:44
0.077605