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;