Tk::Button - Aktionen über Schaltflächen ausführen

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

Button-Optionen

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.

Fallbeispiel Button mit Text und Bild in Perl/TK

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.

Button mit Bild und in Perl/Tk

#!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);
Top