#!/usr/bin/perl -w
use Tk;
#the leakage stops after about 10 open-close cycles
#read perldoc Tk::callbacks
#this is a better method than the first example
my $mw = MainWindow->new(-title=>"Demo");
my $HlpBttn = $mw->Button(
-text =>"Make NEW Window",
-command => [ \&makeWindow, $mw ],
# calls makeWindow and passes $mw as the first argument
);
$HlpBttn->pack(-padx =>60, -pady =>10);
MainLoop;
sub makeWindow {
my $parent = shift;
my $win = $parent->Toplevel(-title=>'new window');
my $Bttn = $win->Button(
-text=>"CLOSE this window",
-command=> [ 'destroy', $win ], # calls destroy on $win
)->pack(
-padx =>60,
-pady =>10,
);
}
__END__
####
#!/usr/bin/perl -w
use Tk;
my $mw = MainWindow->new(-title=>"#1");
$mw->Button(-text=>"Destroy Me",
-command=> sub { $mw->destroy })->pack;
MainLoop;
print "ha ha still going\n";
<>;
####
exit if defined $mainwindow