Wie kann ich auf das Beenden eines Tk-Programmes reagieren?

Inhalt:

Manchmal will man vor dem Beenden eines Programmes noch irgendwelche Aktionen vornehmen. Dies kann man bei Tk machen, indem man $mw->protocol('WM_DELETE_WINDOW') einen Callback mitgibt.

Beispiel: Abfrage, ob wirklich beendet werden soll

#! /usr/bin/perl
use warnings;
use strict;
use Tk;
my $mw = MainWindow->new();
$mw->protocol('WM_DELETE_WINDOW', \&ExitApplication);
MainLoop;

sub ExitApplication {
    # Prepare dialog yes|no
    my $dialog = $mw->Dialog(-text => 'Do you really want to quit?', 
                             -bitmap => 'question',
                             -title => 'Quit?', 
                             -default_button => 'Yes', 
                             -buttons => [qw/Yes No/],
                            );
 
    my $answer = $dialog->Show(); # and display dialog
    if (lc($answer) =~ /y/i){
        # maybe do some cleaning up and
        exit;
    }
    else {
    # continue
    }
 
} # ExitApplication

Ergänzungen, Kommentare

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.StraT - 14 Jul 2003 - Betreff

UtilFaqSubForm edit

Titel Wie kann ich auf das Beenden eines Tk-Programmes reagieren?
Autor StraT?
Bereich FaqTK
Topic revision: 2005-03-30, StraT
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.