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