48 lines
1.1 KiB
Perl
48 lines
1.1 KiB
Perl
use Tk;
|
|
require Tk::BrowseEntry;
|
|
|
|
$numWidgets = 10;
|
|
|
|
$mw = MainWindow->new(-title => "Play w/pack");
|
|
$f = $mw->Frame(-borderwidth => 1,
|
|
-relief => 'groove')
|
|
->pack(-side => 'top',
|
|
-fill => 'x');
|
|
my (@packdirs) = ();
|
|
|
|
$i = 0;
|
|
foreach (0..$numWidgets)
|
|
{
|
|
$packdirs[$_] = 'top';
|
|
my $be = $f->BrowseEntry(-label => "Widget $_:",
|
|
-choices => ["right", "left", "top", "bottom"],
|
|
-variable => \$packdirs[$_], -browsecmd => \&repack)
|
|
->pack(-ipady => 5);
|
|
}
|
|
|
|
$f->Button(-text => "Repack",
|
|
-command => \&repack )
|
|
->pack(-anchor => 'center');
|
|
|
|
$top = $mw->Toplevel(-title => "output window");
|
|
my $c;
|
|
foreach (@packdirs)
|
|
{
|
|
my $b = $top->Button(-text => $c++ . ": $_")
|
|
->pack(-side => $_, -fill => 'both', -expand => 1);
|
|
}
|
|
|
|
MainLoop;
|
|
|
|
sub repack
|
|
{
|
|
@w = $top->packSlaves;
|
|
foreach (@w) { $_->packForget; }
|
|
my $e = 0;
|
|
foreach (@w)
|
|
{
|
|
$_->configure(-text => "$e: $packdirs[$e]");
|
|
$_->pack(-side => $packdirs[$e++], -fill => 'both', -expand => 1);
|
|
}
|
|
}
|