リストボックスウィジェットは,テキストラベルを縦に並べて欄を作るものです.マウスによる選択操作も可能になります.
書式: $child = $parent->Listbox(?options?)
主なオプション
| オプション | 説明 | オプション値の例 |
| -width => x | リストボックスのX方向の文字数を指定する. | 12, 24 |
| -height => y | リストボックスのY方向の文字数を指定する. | 12, 24 |
| -selectforeground => color | 選択状態時のテキストの色 | 'red', '#ff0000' |
| -selectbackground => color | 選択状態時の背景の色 | 'red', '#ff0000' |
| -selectmode => mode | リストボックスの選択モードを指定する. | 'single', 'browse', 'multiple', 'extended' |
メソッド:
補足:
サンプル: カレントディレクトリのファイルのリストボックスを作ります.
#!/usr/bin/perl -w
use Tk;
$mw = MainWindow->new;
$lis = $mw->Listbox(-background=> 'white',
-selectforeground=> 'brown',
-selectbackground=> 'cyan',
-selectmode=> 'extended')
->pack(-fill=>'both',
-expand => 'yes');
foreach $fn (<*>) {
$lis->insert('end',$fn);
}
$mw->Button(-text=>"表示",
-command=> \&Print_selection)
->pack(-fill=>'x');
MainLoop;
sub Print_selection {
my @ind = $lis->curselection;
foreach $i (@ind) {
printf "%s が選択されています.", $lis->get($i);
}
}
#---
# listbox.pl
スクロールバーは表示範囲の限られた場所に,多くの情報を表示させるときに必須のものです.Scrollbarというスクロールバーだけを作る専用のウィジェットがありますが,ここでは,スクロールバーとそれとバインドするウィジェットとを,一気に定義できるScrolled というものを紹介します.
書式: $child = $parent->Scrolled(Whatever, -scrollbars=> where, ?options?)
主なオプション
| オプション | 説明 | オプション値の例 |
| -scrollbars => where | スクロールバーをつける場所を指定.'w'か'e', 'n'か's'で指定する.oを付けると,必要に応じて自動的にスクロールバーがつく. | 's', 'se', 'oe', 'os', 'osoe' |
サンプル: 先ほどのサンプルにスクロールバーをつけてみましょう.
#!/usr/bin/perl -w
use Tk;
$mw = MainWindow->new;
$lis = $mw->Scrolled('Listbox',
-scrollbars=> 'osoe',
-height => 4,
-background=> 'white',
-selectforeground=> 'brown',
-selectbackground=> 'cyan',
-selectmode=> 'extended')
->pack(-fill=>'both',
-expand => 'yes');
foreach $fn (<*>) {
$lis->insert('end',$fn);
}
$mw->Button(-text=>"表示",
-command=> \&Print_selection)
->pack(-fill=>'x');
MainLoop;
sub Print_selection {
my @ind = $lis->curselection;
foreach $i (@ind) {
printf "%s が選択されています.", $lis->get($i);
}
}
#---
# listbox_scr.pl