tkguifan has asked for the wisdom of the Perl Monks concerning the following question:

Currently I'm running a complicated book keeping to monitor the status of open toplevel windows. Can I establish just looking at the variable pointing to the window whether the user has closed that window? ( in my example by querying $toplevel )
use Tk; my $mw=new MainWindow; my $toplevel; my $toplevel_open=0; my $status=$mw->Label(-text=>'Toplevel Closed :(')->pack; sub close_toplevel { return if !$toplevel_open; $toplevel->destroy; $toplevel_open=0; $status->configure(-text=>'Toplevel Closed :('); } $mw->Button(-text=>'Open Toplevel',-command=> sub { ($toplevel=$mw->Toplevel())->OnDestroy(\&close_toplevel); $toplevel_open=1; $status->configure(-text=>'Toplevel Open :)'); } )->pack; $mw->Button(-text=>'Close Toplevel',-command=>\&close_toplevel)->pack; MainLoop;

Replies are listed 'Best First'.
Re: How can I find out whether a Tk Toplevel widget has been destroyed?
by Discipulus (Canon) on Feb 18, 2015 at 08:22 UTC
      It works for me:
      use Tk; my $mw=new MainWindow; my $toplevel; my $toplevel_open=0; my $status=$mw->Label(-text=>'Toplevel Closed :(')->pack; $mw->repeat(1000,sub { $status->configure(-text=>Exists($toplevel)? 'Toplevel Open :)':'Toplevel Closed :('); } ); sub close_toplevel { return if !Exists($toplevel); $toplevel->destroy; } $mw->Button(-text=>'Open Toplevel',-command=> sub { $toplevel=$mw->Toplevel(); } )->pack; $mw->Button(-text=>'Close Toplevel',-command=>\&close_toplevel)->pack; MainLoop;