in reply to help using packForget()
Some options are to make the $boom a global, and when you call the my_die sub, use $boom over and over, by reconfiguring the buttons and labels. As a matter of fact, if you do it that way, you may not need packForget, just withdraw the $boom and reconfigure the widgets. You only need packForget if you want to repack the widgets in a different order. As an example of a non-leaking reusable popup......
#!/usr/bin/perl use warnings; use strict; use Tk; my $tl; my $mw = MainWindow->new; $mw->title( "MainWindow" ); $mw->Button( -text => "Toplevel", -command => \&do_Toplevel )->pack(); MainLoop; sub do_Toplevel { if ( !Exists( $tl ) ) { $tl = $mw->Toplevel(); $tl->geometry('300x100+100+100'); $tl->title( "Toplevel" ); #put all your widgets here $tl->Button( -text => "Close", -command => sub { $tl->grabRelease; $tl->withdraw } )->pack; } else { $tl->deiconify(); $tl->raise(); $tl->grabGlobal; } } ##############################################################
|
|---|