Anordnung von Widgets mit pack() (Perl/TK)
Maik Görgens
- perl
Hallo!
Ich hab grad ein Problem damit, in einem Tk-Programm folgende Anordnung der Widgets mit pack() zu erreichen:
Label | Entry | Button
----------------------
Label | Entry | Button
Ich habe folgenden Code (der allerdings nicht die gewünschte Anordnung erzeugt):
##################################################################
$o->Label(-text => 'Datei auswählen:')->pack(-side => 'left');
$o->Entry()->pack(-side => 'left');
$o->Button(-text => 'Durchsuchen')->pack(-side => 'left');
$o->Label(-text => 'Ordner auswählen:')->pack(-side => 'bottom');
$o->Entry()->pack(-side => 'left');
$o->Button(-text => 'Durchsuchen')->pack(-side => 'left');
##################################################################
Ich weiß, das das mit grid() einfacher zu lösen sein dürfte, aber ich brauche eine Lösung für pack().
Viele Grüße
Maik Görgens
hi,
Ich weiß, das das mit grid() einfacher zu lösen sein dürfte, aber ich brauche eine Lösung für pack().
richtig. In dem Codeschnipsel steht auch nicht, welchen Geometriemanager du nehmen möchtest - grid ist nur einer von mehreren möglichen (und aus meiner Sicht nicht einmal der wichtigste), pack ist dagegen der Packer.
Ohne einen Geometriemanager gehts halt nicht. Ohne den Packer auch nicht.
Grüße aus Berlin
Christoph S.
PS:
vor zwei Tagen erst hat Calocybe nachgefragt, was TCL ist. Wenn nun meine Suchfunktion alles angezeigt hat, habe ich gefunden, daß wir in den letzten drei Jahren genau drei Nachfragen zu diesem scheinbar sehr "speziellen" Thema hatten. Ich will mehr davon !
ups ...
vor lauter Begeisterung über das seltene Thema hab ich vergessen, genauer auf deine Frage einzugehen.
$o->Label(-text => 'Datei auswählen:')->pack(-side => 'left');
$o->Entry()->pack(-side => 'left');
hier könnte es hängen. "Entry()" ist normalerweise etwas, was hier genausowenig hergehört wie "Button" darunter. Die Zeile muß lauten:
$o->Label(-text => 'mach jetzt noch irgendwas')->pack(-side => 'left');
$o->Button(-text => 'Durchsuchen')->pack(-side => 'left');
was eben gesagt wurde, gilt natürlich auch hier.
Aus deinem Codeschnipsel geht auch nicht hervor, ob "$o" korrekt deklariert worden ist, etwa mit
my $o = MainWindow->new;
in der Doku zum Perl/Tk-Modul findest du folgenden Beispielcode:
#! Pfad/zum/Interpreter -w
use strict;
use Tk;
my $main = MainWindow->new;
$main->Label(-text => 'At the top (default)')->pack;
$main->Label(-text => 'At the bottom')->pack(-side => 'bottom');
$main->Label(-text => 'The middle remains')->pack;
my $top1 = $main->Toplevel;
$top1->Label(-text => 'Left')->pack(-side => 'left');
$top1->Label(-text => 'Right')->pack(-side => 'right');
$top1->Label(-text => '?Bottom?')->pack(-side => 'bottom');
my $top2 = $main->Toplevel;
my $frame = $top2->Frame;
$frame->pack;
$frame->Label(-text => 'Left2')->pack(-side => 'left');
$frame->Label(-text => 'Right2')->pack(-side => 'right');
$top2->Label(-text => 'Bottom2')->pack(-side => 'bottom');
MainLoop;
Christoph S.