#!/usr/bin/perl -w # waitwindow.pl use Tk; use strict; my $mw = MainWindow->new(); my $toplevel_count = 0; my $last_window_died = 1; $mw->Checkbutton( -text => 'No toplevel windows alive', -variable => \$last_window_died, )->pack(); $mw->Button( -text => 'Create a toplevel', -command => sub { my $toplevel = $mw->Toplevel; $toplevel_count++; $last_window_died = 0; $toplevel->Button( -text => 'Destroy Me', -command => sub {$toplevel->destroy} )->pack(); $toplevel->waitWindow; #main window keeps processing events... #this code is executed after $toplevel is destroyed $toplevel_count--; if ($toplevel_count == 0) { #toggle the checkbutton $last_window_died = 1; } },#end sub )->pack( -fill => 'x', -expand => 1, ); $mw->Button( -text => 'Quit', -command => sub {$mw->destroy}, )->pack( -fill => 'x', -expand => 1, ); MainLoop();