Thread GUI Aufbau mit TK (7 answers)
Opened by NixIsFix at 2009-08-12 15:10

Kalle
 2009-08-13 02:53
#124186 #124186
User since
2007-03-18
48 Artikel
BenutzerIn
[default_avatar]
Hi,

ich weiss nicht, warum die Frames sich so leicht aus der Fassung bringen lassen, obwohl die Größe doch genau definiert ist, aber etwas mit -expand und -fill experimentieren, liefert schon gute Ergebnisse.

Wenn du die widgets, die deine Daten anzeigen sollen, einmal richtig platziert hast, dann hast du doch deine feste Struktur und brauchst nur noch die Daten für die widgets zu ändern. Oder willst du in den Frames wechselnde widgets anzeigen ?

Ich hab Frames noch nie mit Größenangaben versehen. Nur die widgets, für die ich die frames brauche definieren letztendlich die Größe.
Wenn ich jetzt dein Beispiel nachstellen wollte, hätte ich das vielleicht so gemacht:

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
use strict;
use warnings;
use Tk;

my $out;

my $top = MainWindow->new(-title=>'Tk happy hour',-bg=>'white');
my $frame_top    = $top->Frame->pack(-fill=>'x');
my $frame_middle = $top->Frame->pack(-expand=>'1',-fill=>'both');
my $frame_bottom = $top->Frame->pack(-expand=>'1',-fill=>'both');

my $frame_middle_left  = $top->Frame->pack(-in=>$frame_middle,-side => 'left',-fill=>'both');
my $frame_middle_right = $top->Frame->pack(-in=>$frame_middle,-expand=>'1',-fill=>'both');

my $yellowtopleftlabel = $top->Label(-bg => 'yellow',-width => 32,-height => 15)->pack(-in=>$frame_top,-side=>'left');
my $graytoprightlabel  = $top->Label(-width => 64,-height => 15)->pack(-in=>$frame_top,-fill=>'x');

my $graymiddleleftlabel = $top->Label(-width => 32,-height => 7)->pack(-in=>$frame_middle_left,-expand=>'1',-fill=>'y');
my $outlabel = $top->Label(-textvariable=>\$out,-bg => 'yellow',-font=>'Courier 10',-justify=>'left',-anchor=>'nw')->pack(-in=>$frame_middle_right,-expand=>'1',-fill=>'both');

my $graybottomlabel = $top->Label(-width => 64,-height =>2)->pack(-in=>$frame_bottom,-expand=>'1',-fill=>'both');

my $thisname='Moorhuhn';
my $thispath='C:\Programme\Moorhuhn';
my $thisconfig='yes';

$out=sprintf ("%-20s %s\n%-20s %s\n%-20s %s\n","Projectname:",$thisname,"Projectpath:",$thispath,"config files exist:",$thisconfig);

MainLoop;


Gruß

Kalle

View full thread GUI Aufbau mit TK