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); } }