in reply to tk folding frame

This is probably your best bet. Make a Scrolled Pane to hold the Listbox, and make a bottom frame set to -fill=>'x', -expand =>0, and the buttons are too. It's not perfect, if you make it too small, everything gets crushed.
#!/usr/bin/perl use warnings; use Tk; use Tk::Pane; my @output = (1..100); my $log = MainWindow->new( title => "Who is logged on which tester" ); $log->geometry('125x150'); # first pack a scrolled Pane then a bottom frame my $spane = $log->Scrolled('Pane', -scrollbars => 'osoe', -bg => 'blue', )->pack(-expand=>1,-fill=>'both'); #let the scrolled Pane handle the listbox scrolling $listbox = $spane->Listbox( "-font" => 14, "-width" => 51, "-height" => 27, "-background" => 'lightgreen' )->pack(-expand => 1, -fill => 'both'); foreach $n ( @output ) { $listbox->insert( 'end', "$n" ); } my $logU = $log->Frame->pack( -fill => 'x', -expand => 0 ); $logU->Button( -text => 'Refresh', -background => 'lightgreen', -activebackground => '#0000ff', -activeforeground => '#80ffff', -command => sub { $Refr = 1; $log->destroy; } )->pack( -side => 'left', qw/-ipadx 4 -pady 2/, -expand => 0 ); $logU->Button( -text => 'OK', -background => 'lightgreen', -activebackground => '#0000ff', -activeforeground => '#80ffff', -command => \&exit )->pack( -side => 'right', qw/-ipadx 14 -pady 2/, -expand => 0 ); MainLoop;

I'm not really a human, but I play one on earth Remember How Lucky You Are