Tk::messageBox zeigt ein Pop-up an und wartet auf eine Antwort durch den Nutzer. Optional können ein Text und ein Icon angezeigt werden. Das Pup-up ist modal, die Haupt-Anwendung wird blockiert bis der Dialog durch den Nutzer beantwortet wurde. Die Buttons, mit denen der Nutzer das Pop-up bestätigen kann, können aus einer Reihe von vordefinierten Kombinationen gewählt werden. Die Buttons sind übrigens automatisch lokalisiert und richten sich nach der Sprache des Betriebssystems.
Aufgrund des fest definierten Funktionsumfangs bietet sich die messageBox als schnelles, unkompliziertes Widget für einfache Abfragen an.
Option | Beschreibung | Mögliche Werte | Standardwert |
---|---|---|---|
-default | bestimmt, welche Schaltfläche (siehe -type) standardmäßig fokussiert wird | yes, no, cancel, abort, retry, ignore | die jeweils erste Schaltfläche von links |
-icon | Symbol links von der Nachricht, optional | error, info, question, warning | kein Symbol |
-message | Nachricht, die der Dialog anzeigen soll, optional | kein Text (der kann auch leer sein) | |
-title | Text in der Titelzeile des Pop-ups, optional | der Standardwert ist vom Betriebssystem abhängig | |
-type | bestimmt den vordefinierten Satz von Schaltflächen der angezeigt werden sollen, optional | abortretryignore, ok, okcancel, retrycancel, yesno, yesnocancel | OK |
Typ der messageBox | Angebotene Buttons |
---|---|
abortretryignore | Abbrechen, Wiederholen & Ignorieren |
ok | OK |
okcancel | OK & Abbrechen |
retrycancel | Wiederholen & Abbrechen |
yesno | Ja & Nein |
yesnocancel | Ja, Nein & Abbrechen |
Die möglichen Rückgabewerte der messageBox richten sich nach den Buttons, die angeboten werden. Es muss folglich einer der folgenden Werte sein: yes, no, cancel, abort, retry oder ignore. Der Dialog ist sehr hartnäckig, ich habe es bisher nicht geschafft ihn anders als über einen der Buttons zu beenden. Da der Dialog zudem auch noch modal ist (man also in der Zwischenzeit nicht mit dem Rest der Applikation arbeiten kann), muss einer der Buttons betätigt werden.
Andere Werte für die Buttons sind nicht möglich - wer das braucht sollte sich z.B. Tk::Dialog ansehen.
#!perl
use strict;
use warnings;
use Tk;
my $mw = Tk::MainWindow->new();
my $button = $mw->Button(
-text => "Do you like me?",
-command => \&show_the_dialog,
)->pack(-side => 'left',);
my $label = $mw->Label(
-text => 'I\'m not sure yet',
)->pack(-side => 'left',);
$mw->MainLoop();
exit(0);
sub show_the_dialog {
my $answer = $mw->messageBox(
-icon => 'question',
-type => 'yesno',
-title => 'Some Message',
-message => 'Do you like me so far?',
);
$label->configure(-text => $answer);
} # /show_the_dialog