Relayout(pack) the controls
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);
}
}
Related examples in the same category