Schrift
[thread]5175[/thread]

Tk: Geometry Managment mit pack

Leser: 1


<< >> 3 Einträge, 1 Seite
frodus
 2006-04-16 14:09
#45351 #45351
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Hi Leute,

wie muss ich meine Tk Anwendung aufbauen, damit eine Veränderung der Fenstergrösse nicht im totalen Chaos endet?

Mir würde glaube ich ein Beispiel schon weiterhelfen. Ich habe hier mal den Code aus einem unserer Wiki Beispiel kopiert:

Code: (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
#!/usr/bin/perl
use strict;
use warnings;

use Tk;

my $top = MainWindow->new();


my $frame1 = $top->Frame(-width  => 200,
                        -height => 50,
                        -bg     => 'black');

my $frame2 = $top->Frame(-width  => 200,
                        -height => 50,
                        -bg     => 'red');

my $frame3 = $top->Frame(-width  => 200,
                        -height => 50,
                        -bg     => 'yellow');

$frame1->pack(-side => 'top');
$frame2->pack(-side => 'top');
$frame3->pack(-side => 'top');

MainLoop();


Wie müsste man den Code verändern damit ein Resize vernünftig funktioniert?

Danke,

Frodus
coax
 2006-04-16 15:01
#45352 #45352
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
pack() kennt die Optionen -fill und -expand.
Mit -fill fuellt die Flaeche die dem Widget zur Verfuegung steht voll aus.

Im oberen Beispiel stehen den Frames, da sie nacheinander an die obere Seite gepackt werden, der Platz in die linke und rechte Richtung voll zur Verfuegung. Mit -fill kann man nun festlegen dass das Widget die gesamte zur Verfuegung stehende Flaeche ausfuellen soll.
Code: (dl )
1
2
3
4
# ...
$frame1->pack(-side => 'top', -fill => 'both');
$frame2->pack(-side => 'top', -fill => 'both');
$frame3->pack(-side => 'top', -fill => 'both');

Jetzt wird der Platz in der horizontalen Richtung ausgefuellt, jedoch noch nicht in der vertikalen, hierzu muss zusaetzlich noch die -expand-Option mit angegeben werden.
Code: (dl )
1
2
3
4
# ...
$frame1->pack(-side => 'top', -fill => 'both', -expand => 1);
$frame2->pack(-side => 'top', -fill => 'both', -expand => 1);
$frame3->pack(-side => 'top', -fill => 'both', -expand => 1);

Die -expand-Option richtet sich nach der Angabe von -side, in diesen Fall 'top' das heiszt die Ausweitung des dem Widget zur Verfuegung stehenden Platzes erfolgt in vertikaler Richtung.

perldoc Tk::pack

Grusz Christian.
,,Das perlt aber heute wieder...'' -- Dittsche
frodus
 2006-04-18 14:54
#45353 #45353
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Danke!

Ich hoffe ich habe es jetzt endlich verstanden!

/Frodus
<< >> 3 Einträge, 1 Seite



View all threads created 2006-04-16 14:09.