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;