Thread LabFrame & Widgetanordnung (pTk)
(6 answers)
Opened by styx-cc at 2009-12-25 20:18
Hallo, erstmal vielen Dank, das hat mich ein wenig weiter gebracht.. Da ich allerdings auf Kriegsfuß mit den Geometriemanagern stehe ist mein Problem noch nicht ganz geloest :-)
Erstmal der aktuelle Code mit etwas mehr Zusammenhang: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #!/usr/bin/perl -w use strict; use Tk; use Tk::LabFrame; use Tk::Pane; my $self = {}; $self->{'mw'} = tkinit(); my $fr_lframe = $self->{'mw'}->LabFrame(-label => 'Friends') ->pack(-side => 'bottom', -fill => 'x'); $self->{'wgt'}->{'fr_frame'} = $fr_lframe->Scrolled('Frame', -scrollbars => 'oe', -background => 'red', -sticky => 'nsew') ->pack(-side => 'top', -fill => 'both', -expand => 1); update_friends($self, 'list#test_user#freddy#erik#klaus#dieter#peter'); MainLoop; sub update_friends { my $self = shift; my $msg = shift; if ($msg =~ /^list#(.*)/) { my @friend_list = sort split /#/, $1; $self->{'wgt'}->{'fr_frame'}->gridPropagate(0); my ($row, $col) = (0, 0); for my $friend (@friend_list) { print "R: $row | C: $col\n"; $self->{'wgt'}->{'fr_frame'}->gridRowconfigure($row, -weight => 1); $self->{'wgt'}->{'fr_frame'}->Label(-text => "- $friend", -font => 'Arial 7.5', -foreground => 'blue', -justify => 'left') ->grid(-row => $row, -column => $col++, -sticky => 'ew'); if ($col > 1) { $col = 0; $row++; } } $self->{'wgt'}->{'fr_frame'}->gridColumnconfigure(0, -weight => 1); $self->{'wgt'}->{'fr_frame'}->gridColumnconfigure(1, -weight => 1); } } Eigentlich will ich nur, das grid 100% des im Frame zur Verguegung stehenden Platzes auch ausnutzt, diesen gerecht an die Spalten verteilt und das erste Element links oben erscheint. Mit ->pack(-side => 'left', -anchor => 'n') klappt das ganz gut, allerdings bietet sich grid hier ja wesentlich mehr an, als pack. Verzweifelte Gruesse und vielen Dank. MfG ps.: 2x versehntlich als gast geposted Last edited: 2009-12-26 13:20:14 +0100 (CET) |