Buttons sind wie Labels, nur dass sie auf Mausklicks reagieren. Man kann eine Aktion definieren, die ausgeführt wird, wenn der Button angeklickt wird.
Nachfolgendes Beispiel zeigt ein Perl/Tk-Fenster mit zwei Buttons. Der erste Button ist an die Sub push_button
gebunden. Dort kann man definieren, was passieren soll.
Der zweite Button ist an die Sub quit_program
gebunden. Wird er angeklickt, wird quit_program
ausgeführt und das Programm beendet.
#!perl
use strict;
use warnings;
use utf8;
use Tk;
# Ein neues Hauptfenster erzeugen:
my $mw = Tk::MainWindow->new(
-width => 160,
-height => 120,
);
$mw->packPropagate(0);
# Button erstellen:
my $but = $mw->Button(
-text => "Drück mich",
-command => \&push_button,
);
# Button aud der grafischen Oberfläche sichtbar machen:
$but->pack();
# Quit-Button erstellen:
my $quit_btn = $mw->Button(
-text => "Programm beenden",
-command => \&quit_program,
);
# Buttons auf der grafischen Oberfläche sichtbar machen:
$but->pack();
$quit_btn->pack();
# Tk-Eventloop starten:
$mw->MainLoop();
# Diese Sub wird ausgeführt, wenn der $but-Button gedrückt wird:
sub push_button {
# ... whatever ...
} # /push_button
sub quit_program {
exit(0);
} # quit_program
Es folgt die obligatorische Tabelle zur Erklärung der relevanten Parameter, die man einem Button mitgeben kann:
Widget-Option | Mögliche Werte | Funktion |
---|---|---|
-anchor | "n" | "ne" | "e" | "se" | "s" | "sw" | "w" | "nw" | "center" | Der Text wird an dieser Position verankert. Wenn der Button mehr Platz bietet als der Text eigentlich benötigt, so kann der Text über diese Option innerhalb des Buttons ausgerichtet werden. |
-command | Callback | Gibt den Code an, der bei einem Klick auf den Button ausgeführt wird. |
-justify | "left" | "right" | "center" | Ausrichtung von mehrzeiligen Text. Text kann mit einem Zeilenumbruch (\n) im Text umgebrochen werden. |
-state | "normal" | "disabled" | "active" | Der Status des Buttons. disabled bedeutet, dass der Button nicht betätigt werden kann. Der Status active tritt ein, wenn die Maus sich über dem Button befindet. Der Status normal ist der Standardfall - der Button ist aktiv und er kann angeklickt werden. |
-text | "Text" | Die Beschriftung des Buttons |
-textvariable | Referenz auf einen Skalar. Beispiel: -textvariable => \$text |
Alternativ zur Option -text kann auch eine Textvariable angegeben werden. Ändert sich der Inhalt der Variable, dann wird auch sogleich der Text des Buttons aktualisiert. |
-image | Ein Tk::Image-Objekt (oder auch ein Tk::Photo-Objekt) | An Stelle des Textes kann auch ein Bild angezeigt werden. Siehe auch die Option -compound . Die Option -image gewinnt immer: sie überschreibt die Optionen -text (und -textvariable ). |
-compound | 'bottom' | 'center' | 'left' | 'none' | 'right' | 'top' | Soll ein Button sowohl Bild als auch Text beinhalten, so kann dies über die Option -compound einegstellt werden. Der Wert (der dann etwas anderes als none sein muss) gibt an, wo das Bild erscheint. |
Für den Artikel Buttons mit Bild in Perl/Tk und Tkx entstand nachstehender Beispielcode, der zeigt wie man einen Button mit Text und Bild erstellt.
#!perl
use strict;
use warnings;
use Tk;
use Tk::PNG;
my $png_image_file = 'media-playback-start-7.png';
my $mw = Tk::MainWindow->new();
my $pic = $mw->Photo(-file => $png_image_file);
my $btn = $mw->Button(
-text => "Button mit PNG-Datei als Bild",
-compound => 'top',
-image => $pic,
);
$btn->pack(-padx => 10, -pady => 10,);
$mw->MainLoop();
exit(0);