Tutorial zu Perl mit dem Tk-Modul

Kapitel 6 : pack - Der Geometriemanager


Zurück Index Weiter


Bevor Sie jetzt weitermachen, sollten Sie zunächst erfahren, wie Sie die Steuerelemente nach Wunsch plazieren können. Dazu kann man der Methode pack, die wir in den Beispielprogrammen bisher ohne Parameter verwendet haben, bestimmte Anweisungen geben:

eingabe_machen.pl

#!/usr/bin/perl
use strict;
use warnings;

use Tk;

my $main = MainWindow->new();

$main->Label(-text   => 'Bitte machen Sie eine Eingabe:',
            )
      ->pack(-side   => 'top',  # top = oben (default)
             -anchor => 'w',  # w = west = links
            );

$main->Button(-text       => 'OK',
              -background => 'yellow' ,
              -command    => \&new_window,
             )
       ->pack(-side => 'right',  # gelber Button rechts
             );

my $eingabe= $main->Entry(-background => 'white')
                   ->pack(-side       => 'left' );


MainLoop();


sub new_window {
    my $top1 = $main->Toplevel();

    $top1->Label(-text => "Sie gaben ein : " . $eingabe->get(),
                )
          ->pack(-side => 'top'
                );

    $top1->Button(-text    => 'close',
                  -command => [ $top1 => 'destroy' ],
                 )
          ->pack(-side     => 'bottom',
                 -fill     => 'both',
                );

    $eingabe->delete(0, 'end');
}

So sieht das Ergebnis unter Linux/Unix aus:

tk7.png tk8.png

(Dies sind zunächst die Bilder aus dem alten Tutorial, sie werden noch durch neue ersetzt.)

und so unter Windows:

tk7_win.png tk8_win.png

Die Zeile

-command => [ $top1 => 'destroy' ],

hätte man auch als

-command => sub { $top1->destroy() },

schreiben können, die Wirkungsweise ist die gleiche (TIMTOWDI).

Ich habe im Quellcode einiges kommentiert und überlasse Ihnen den Code nach der Devise probieren und anschauen. Ich rate Ihnen dazu, die jeweilige man- bzw. perldoc-Pages der einzelnen Steuerelemente durchzulesen und damit an diesem Programm herumzuspielen (nach dem Trial and Error-Prinzip). Zur Übersicht die wichtigsten Optionen für pack:

pack-Option mögliche Werte Bedeutung
-side "left", "right", "top" oder "bottom" Platziert das Widgetrechteck an die angegebene Seite des Fensters oder Frames.
-fill "none", "x", "y" oder "both" Das Widgetrechteck breitet sich in die angegebene Richtung aus.
-expand 1 oder 0 Das Widget füllt den Platz im Widgetrechteck aus (oder nicht).
-ipadx Betrag Definiert einen horizontalen Abstand um das Widget (dabei wird es um 2xBetrag in horizontaler Richtung vergrößert).
-ipady Betrag Definiert einen vertikalen Abstand um das Widget (dabei wird es um 2xBetrag in vertikaler Richtung vergrößert).
-padx Betrag Setzt links und rechts je Betrag Pixel Polster ein.
-pady Betrag Setzt oben und unten je Betrag Pixel Polster ein.
-anchor "n", "ne", "e", "se", "s", "sw", "w", "nw" oder "center" Verankert das Widget in seinem Rechteck an der angegebenen Stelle.

Um die verschiedenen Parameter zu verstehen muss man wissen, dass jedes Widget von seinem sogenannten Widgetrechteck umgeben wird. Man kann mit einigen Parametern auf das Widget und mit einigen auf seinen Rahmen Einfluß nehmen.

Die wichtigsten sind wohl -fill (wie verhält sich das Widgetrechteck) und "-expand= (wie verhält sich das Widget in seinem Rechteck). Am besten ist es hier, mit den Parametern in einem Programm herumzuspielen, bis man vertanden hat, welcher Parameter welche Bedeutung hat. Denken Sie daran, Ihr erzeugtes Fenster mit der Maus zu vergrößern und zu verkleinern, dann sehen sie am besten, wie sich die einzelnen Widgets bzw. ihre Rechtecke verhalten.

Mehr zum Geometriemanager pack findet man unter perldoc Tk::pack

Es gibt noch andere Geometriemanager, die sie unter Perl/Tk verwenden können, und zwar grid und place. Auf beide möchte ich hier nicht weiter eingehen, grid betrachtet das Fenster im Wesentlichen wie ein Schachbrett, mit place können sie Elemente pixelgenau plazieren. Für die meisten Fälle ist aber pack genau das richtige, und daher empfehle ich, zunächst mit diesem Manager zu experimentieren. Weitergehende Informationen zu den beiden anderen Managern erhalten Sie mit perldoc Tk::grid bzw perldoc Tk::place.


Zurück Index Weiter


-- ChristianDuehl - 09 Dec 2003

-- ChristianDuehl - 10 Dec 2003

-- ChristianDuehl - 18 Dec 2003

-- ChristianDuehl - 19 Dec 2003
Topic attachments
I Attachment Action Size Date Who Comment
eingabe_machen.pl.txttxt eingabe_machen.pl.txt manage 1.0 K 2003-12-10 - 19:54 ChristianDuehl Programm eingabe_machen.pl
Topic revision: r5 - 2003-12-19 - 09:33:14 - ChristianDuehl
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.