sub Popup { my $w = shift; $w->configure(@_) if @_; $w->idletasks; my ($mw,$mh) = ($w->reqwidth,$w->reqheight); my ($minwidth,$minheight) = $w->minsize; #JD# $mw = $minwidth if (defined $minwidth and $minwidth > $mw); #JD# $mh = $minheight if (defined $minheight and $minheight >$mh); #JD# my ($rx,$ry,$rw,$rh) = (0,0,0,0); ... #### $mw -> minsize (qw(600 400)); #### use strict; use warnings; use Tk; my $mw = MainWindow -> new; $mw -> minsize (qw(600 400)); $mw -> withdraw; for (1..10) { my $button = $mw -> Label (-text => "Label $_") -> pack; } $mw -> update; $mw -> idletasks; $mw -> Popup( -overanchor => 'c', -popanchor => 'c', ); MainLoop;