![ein Kapitel weiter](../weiter.gif)
Um sich jetzt zum Beispiel die Radiobuttons und die Checkbuttons in dem Fenster zu trennen benötigen wir Frames. Mit Frames teilen wir den Bereich im Fenster in mehrere (unsichtbare) Bereiche auf. Wollen wir uns gleich mal ansehen wie man ein Fenster in mehrere Frames unterteilt.......
#! /usr/bin/perl -w
use strict;
use Tk;
my $main = MainWindow->new;
my $frame_left=$main->Frame()->pack(-side => 'left');
my $frame_right=$main->Frame()->pack(-side => 'right');
my $check1=$frame_left->Checkbutton(-text => "Kontrollkästchen 1")
->pack();
my $check2=$frame_left->Checkbutton(-text => "Kontrollkästchen 2")
->pack();
my $radio1=$frame_right->Radiobutton(-text => "Optionsfeld 1" )
->pack();
my $radio2=$frame_right->Radiobutton(-text => "Optionsfeld 2")
->pack();
MainLoop;
So siehts aus :
In diesem Beispiel richten wir mittels...........
my $frame_left=$main->Frame()->pack(-side => 'left');
my $frame_right=$main->Frame()->pack(-side => 'right');
....eine linken und einen rechten Bereich (Frame) in unserem MainWindow ein. Der
Zugriff erfolgt dann auch über den einzelnen Framebereichen und nicht mehr über die
Referenz des MainWindows.
Wenn sie jetzt noch eine 3. Frame einfügen wollen um einen Zwischenraum dieser beiden
Frames zu schaffen so genügt folgendes....
my $frame_center=$main->Frame(-width => 100, -height => 100)
->pack(-side => 'left', -anchor => 'center');
...und voiala. Nun sind wir in der Lage mittels Frames mehrer Widget zusammenzufassen. Hier noch ein paar weitere
Programme um ein Gefühl für die Frames zu bekommen...........
#!/usr/bin/perl -w
use Tk;
use strict;
my $top = new MainWindow;
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;
So siehts aus :
Durch die Anweisung -side = des Geometriemanagers pack wird dafür gesorgt
das immer das nächste Frame oben ist. Hier wird die Deutsche Nationalflagge
dargestellt. Jetzt wollen wir das ganze um 90 Grad drehen............
#!/usr/bin/perl -w
use Tk;
use strict;
my $top = new MainWindow;
my $frame1 = $top->Frame(-width => 50,
-height => 200,
-bg => 'black');
my $frame2 = $top->Frame(-width => 50,
-height => 200,
-bg => 'red');
my $frame3 = $top->Frame(-width => 50,
-height => 200,
-bg => 'yellow');
$frame1->pack(-side => 'left');
$frame2->pack(-side => 'left');
$frame3->pack(-side => 'left');
MainLoop;
So siehts aus :
Nun wir jeder neue Frame immer erst an der linken Seite dargestellt. Nun ist auch nicht
schwer mit Hilfe von Schleifen und Frames ein Schachbrett mit 64 Feldern
darzustellen...........
#!/usr/bin/perl -w
use Tk;
use strict;
my @colors = qw(black yellow);
my $top = new MainWindow;
foreach my $i (1..8) {
my $row = $top->Frame->pack(-side => 'top'); #8 Reihen
foreach my $j (1..8) {
my $frame = $row->Frame(-width => 25, -height => 25,
-bg => $colors[($i + $j) % 2]);
#gerade Zahlen Schwarze Farbe, ungerade gelbe Farbe
$frame->pack(-side => 'left');
#In der Reihe n links anfügen
}
}
MainLoop;
So siehts aus :
Zuerst wird immer ein Frame oben erzeugt in dem dann 8 Felder in der Spalte jeweils
ein Frame links eingefügt wird. Um Frames in einer bestimmten Art darzustellen gibt
es die Option relief.......
#!/usr/bin/perl -w
use strict;
use Tk;
my $mw = MainWindow->new();
my $f1 = $mw->Frame(-relief => 'ridge',
-width => '100',
-height => '30',
-borderwidth => '10')->pack(-side => 'top');
my $text = $f1->Label(-text => "Dies relief nennt sich : ridge")->pack;
my $f2 = $mw->Frame(-relief => 'groove',
-width => '100',
-height=> '50',
-borderwidth => '10')
-> pack(-side => 'bottom' ,
-pady => '10',
-padx => '5');
my $text2 = $f2->Label(-text => "Dies relief nennt sich : groove")
->pack;
MainLoop;
So siehts aus :
Weitere Reliefs mit denen sie rumspiele können wenn sie wollen wären.......
"flat" |"raised" | "sunken" | "solid"
![ein Kapitel weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|