Nun zu einem weiteren Steuerelement des MainWindow Objekts, den Buttons oder Schaltern. Jeder kennt diese Fensterelemente, Buttons befinden sich zum Beispiel in Dialogfenstern und es stehen Schriftzüge auf ihnen wie z.B. "OK" oder "Abbrechen". Man kann aber auch Bilder auf den Buttons anzeigen. Aber bleiben wir zunächst bei einfachen Buttons mit Texten:
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
my $fenster = MainWindow->new();
my $schalter = $fenster->Button(
-text => 'Klick mich',
-command => sub {
print "Zurück in der Konsole\n";
exit 0;
},
)->pack();
$fenster->MainLoop();
So sieht das Ergebnis aus:
Im Gegensatz zum Beispiel mit dem Label, haben wir hier die MainWindow Methode Button verwendet. Mit den Zeilen
my $schalter = $fenster->Button(
-text => 'Klick mich',
-command => sub {
print "Zurück in der Konsole\n";
exit 0;
},
)
haben Sie einen Schalter erzeugt, auf dem der Text "Klick mich" steht und der bei Betätigung eine Ausgabe in der Konsole schreibt und das Fenster schließt. Dafür wird in der dem Schalter per -command
zugewiesenen Funktion, die beim Klicken auf den Schalter ausgeführt wird, die Perl-Funktion exit
aufgerufen.
Dies ist übrigens ein typischer Tk-Stil, Parameter festzulegen:
-option => Anweisung
Hier ein paar Widget-Optionen, die wir noch häufiger anwenden werden:
Widget-Option | mögliche Werte | Bedeutung |
---|---|---|
-anchor | "n", "ne", "e", "se", "s", "sw", "w", "nw" oder "center" | Der Text wird an dieser Position verankert. |
-background | Farbe | Legt die Hintergrundfarbe des Widget fest. |
-borderwidth | Betrag | Ändert die Breite des Rahmens. |
-command | Callback (Funktionsreferenz, anonyme Subroutine oder anonyme Liste, deren erstes Element eine Funktionsreferenz und deren weitere Elemente Parameter für diese Funktion sind ): \&myfunc , sub { ... } oder [ \&myfunc, $arg1, $arg2, \@arg3 ] |
Aktiviert die Callback-Funktion, wenn das Widget angeklickt wird. |
-foreground | Farbe | Legt die Schriftfarbe des Widgets fest |
-height | Betrag | Ändert die Höhe des Widgets. |
-width | Betrag | Ändert die Breite des Widgets. |
-justify | "left", "right" oder "center" | Ausrichtung von mehrzeiligen Text. |
-relief | "flat", "groove", "raised", "ridge", "sunken" oder "solid" | Ändert den Kantentyp. |
-state | "normal", "disabled" oder "active" | Der Status des Widgets. |
-text | "Text" | Der Textstring, der im Widget angezeigt wird. |
-textvariable | Variablenreferenz: \$text= | Wie -text , nur das sich der Text ändert, wenn die Variable =$text sich ändert. |
-title | "Titel" | Gibt dem Widget einen Titel. Funktioniert nur bei Frames und Fenstern. |
Im nächsten Beispiel werden Sie den Text des Buttons während der Ausführung des Programms ändern. Dafür verwendet man die Option
-textvariable => \$variable
Hierzu ein Beispiel, bei dem mit jedem Anklicken des Buttons die aktuelle Uhrzeit und Datum auf dem Button angezeigt wird:
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
my $main = MainWindow->new();
my $time = localtime();
$main->Button(
-textvariable => \$time,
-command => sub { $time = localtime() },
)->pack();
$main->MainLoop();
So sieht das Ergebnis aus:
Die Funktion localtime
gibt uns das aktuelle Datum mit Uhrzeit wieder.
Scheuen Sie sich nicht mit den Optionen der Button-Methode herumzuspielen. Sie laden geradezu dazu ein.
Mehr zum Steuerelement Button finden Sie auf der Widget-Seite zum Button.