GUI mit Perl/Tk

Perl/Tk-Tutorial

Kapitel 3: Steuerelement - Button

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:

klick_mich.pl

#!/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:

einfaches Programm mit einem Label

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:

zeit_button.pl

#!/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:

einfaches Programm mit einem Label

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.

Top