エントリウィジェットは,一行の入力欄を作るためのものです.一方,メッセージは一行以上の
エントリウィジェットは,一行の入力欄を作るためのものです.GUI でよく使われます.
書式: $child = $parent->Entry(?options?)
主なオプション
オプション | 説明 | オプション値の例 |
-width => x | エントリのX方向の幅を指定する. | 12, 24 |
-show => "c" | 入力されたとき,代わりに表示する文字.パスワード入力欄などに便利. | "*", "." |
メソッド:
補足:
サンプル: パスワード入力
#!/usr/bin/perl -w use Tk; $mw = MainWindow->new(); $msg="ログインしてください."; $row=0; foreach $txt (qw/ユーザ: パスワード:/) { $mw->Label(-text=>$txt, anchor=>'w') ->grid(-row=>$row++, -column=>0, -sticky=>'news'); } $ent1 = $mw->Entry(-width =>24, -background=>'white') ->grid(-row=>0, -column=>1, -sticky=>'news'); $ent2 = $mw->Entry(-width =>24, -show=>"*", -background=>'white') ->grid(-row=>1, -column=>1, -sticky=>'news'); $mw->Button(-text=>"ログイン", -command=>\&Check_pswd) ->grid(-row=>2, -column=>0, -columnspan=>2); $mw->Label(-textvariable=>\$msg, -relief=>'sunken') ->grid(-row=>3, -column=>0, -columnspan=>2, -sticky=>'news'); MainLoop; sub Check_pswd { my $logname = $ent1->get; my $passwd = $ent2->get; if (($logname eq "perltk") && ($passwd eq "program")) { $msg = "ログイン成功!!"; } else { $msg = "ログイン失敗"; $mw->bell; $ent2->delete(0,'end'); } } #--- #entry.pl
複数行のテキストを表示するためのウィジェットです.入力は出来ませんが,テキストの高さにあわせて,縦横比を自動的に調整してくれます.
書式: $child = $parent->Message(?options?)
主なオプション
オプション | 説明 | オプション値の例 |
-text => textstring | メッセージ文字列を指定する. | "これはペンです. あれはりんごです. perl/Tk" |
-aspect => aspect | メッセージの高さを1としたとき,横幅の割合x100の値を指定する.例えば縦横比3の時は300. | 300, 450 |
-justify => style | テキストを寄せる方向を指定.デフォルトは'left' | 'left', 'right', 'center'のどれか |
-width=> width | ウィジェットの幅.aspectよりも優先される | 60, 120 |
サンプル: 長いメッセージ
#!/usr/bin/perl -w use Tk; $msg = " Perl/Tk は、Nick Ing-Simmons 氏が、Tcl/Tk の Tkツールキットの部分を、 Tcl 言語に依存せずに他のプログラミング言語からも利用できる、Portable な Tk、すなわち pTk を作ろうと試みて、それを最初に Perl で利用できる ようにしたものです。 しかし実際には Tcl 言語との関わりを完全に絶つには至っていません。 この pTk (と Perl とのインターフェイス部分)は、Perl からはモジュール として利用できるようになっており、GUI を使ったプログラミングを Tcl/Tk と同じように手軽に実現できます。さらにこの Tk モジュールには、Tcl/Tk 標準のウィジェットだけでなく Tcl/Tk 用の拡張コマンドとして配布されて いる Tix なども盛り込まれているので、非常に多くのウィジェットが利用で きるようになっています。 須栗歩人「入門 Perl/Tk」(秀和システム) から "; $mw = MainWindow->new(); $mw->Message(-text=>$msg, -aspect=>300) ->pack(-fill=>'x'); #--- #message.pl