Załóżmy że mamy blat stołu lub biurka, a na nim położoną kartkę papieru. Pokolorowaliśmy ja farbkami na jednolity kolor, ustaliliśmy jak długie i szerokie będą boki, czy będziemy mogli je zwężać lub rozszerzać, składając, zaginając lub rozwijając do wymaganych wymiarów. Wszytko ładnie tylko mało przydatne. Czas coś położyć na tej kartce. Ale co i w jaki sposób. Patrząc na ofertę Tk jest wiele takich przedmiotów które możemy położyć na formatce. Ustawiając elementy musimy skorzystać z pomocnika jakim jest Menadżer Geometrii. Mamy kilku taki menadżerów Cytat: => pack
=> place
=> grid
=> form
Menadżerowie pomagają Nam układać elementy, tak jak układa się puzzle. Wiedzą gdzie elementy postawić, z której strony, tak aby na siebie nie zachodziły. Dlatego warto na kartce papieru najpierw rozplanować ich ułożenie, a dopiero później pisać kod. Dlatego podstawową zasadą układania komponentów jest Cytat: 1) Najpierw staramy się opisać komponent (wielkość, kolor, szerokość, itp)
2) Następnie używamy menadżera, aby pomógł Nam ustawić komponent na formatce
W swojej pracy wykorzystamy formatkę zbudowaną w poprzednim artykule. Na początku dodamy do niej przyciski używając menadżera z bez parametrów, a następnie z menadżerem pack z parametrami.
#!/usr/bin/perl
use warnings;
use strict;
use utf8;
require Tk;
use Tk;
my $mw = MainWindow->new();
#ustawiamy
#tytuł formatki
$mw->title("Portal PerlGtk Was Wita");
#minimalna szerokość i wysokość podana w pikselach
$mw->minsize(qw(300 300));
#maksymalna szerokość i wysokość podana w pikselach
$mw->maxsize(qw(400 400));
#w którym miejscu na ekranie będzie wyświetlona podana w pikselach
$mw->geometry('+400+250');
#czy możemy rozciągać szerokość lub wysokość
#zmieniajcie z 1 na 0 i odwrotnie
$mw->resizable(1,1);
#kolor naszego tła red, white, green ,yellow
$mw->configure(-background => 'yellow');
#dodajemy dwa przyciski i jedną etykietę
#oraz dekorujemy je
$mw->Button(-text => "Pierwszy",
-background => 'red',
-cursor => 'boat',
-width => 50)->pack();
$mw->Button(-text => "Drugi",
-background => 'blue',
-cursor => 'heart',
-height => 20,
)->pack();
$mw->Label(-text => "To jest portal Perlgtk. Poratl dostarcza wiadomości o \n
ekosystemie Perla, dlatego jest dobre",
-background => 'yellow',
-cursor => 'pencil')->pack();
MainLoop();
Należy zwrócić uwagę na pewne zasady Cytat: 1) Nie korzystając z ustawień menadżera, korzystamy z domyślnego sposobu ustawień.
2) Kładąc komponenty na formatce, obowiązuje zasada kto pierwszy ten lepszy czyli wstawianie komponentów zaczyna się do samej góry formatki, posuwając się w dół.
3) Właściwości każdego komponentu podane są w dokumentacji, która podaliśmy w pierwszym artykule, w zasobach CPAN lub internecie
Poniższy przykład wykorzystuje menadżera do ustawienia w określonym miejscu Naszych komponentów. Należy zauważyć że napis został przycięty, Spowodowane jest to zachłannym zajęciem miejsca przez przyciski, gdyż nie tylko zajmują obrys który widzimy, ale także prostokątną powierzchnię z góry na dół.
#!/usr/bin/perl
use warnings;
use strict;
use utf8;
require Tk;
use Tk;
my $mw = MainWindow->new();
#ustawiamy
#tytuł formatki
$mw->title("Portal PerlGtk Was Wita");
#minimalna szerokość i wysokość podana w pikselach
$mw->minsize(qw(300 300));
#maksymalna szerokość i wysokość podana w pikselach
$mw->maxsize(qw(400 400));
#w którym miejscu na ekranie będzie wyświetlona podana w pikselach
$mw->geometry('+400+250');
#czy możemy rozciągać szerokość lub wysokość
#zmieniajcie z 1 na 0 i odwrotnie
$mw->resizable(1,1);
#kolor naszego tła red, white, green ,yellow
$mw->configure(-background => 'yellow');
#dodajemy dwa przyciski i jedną etykietę
#oraz dekorujemy je
$mw->Button(-text => "Pierwszy",
-background => 'red',
-cursor => 'boat',
-width => 20
)->pack(-side => 'left', -anchor => 'nw');
$mw->Button(-text => "Drugi",
-background => 'blue',
-cursor => 'heart',
-width => 20
)->pack(-side => 'right', -anchor => 'se');
$mw->Label(-text => "To jest portal Perlgtk. Poratl dostarcza wiadomości o \n
ekosystemie Perla, dlatego jest dobre",
-background => 'yellow',
-cursor => 'pencil',
)->pack(-side => 'left');
MainLoop();
Na koniec krótki przykład, który możecie wykorzystać w swoich programach. Jest to taki przybornik z przyciskami.
#!/usr/bin/perl
use warnings;
use strict;
use utf8;
require Tk;
use Tk;
my $mw = MainWindow->new();
#ustawiamy
#tytuł formatki
$mw->title("AutoCad");
#w którym miejscu na ekranie będzie wyświetlona podana w pikselach
$mw->geometry('+400+250');
#czy możemy rozciągać szerokość lub wysokość
#zmieniajcie z 1 na 0 i odwrotnie
$mw->resizable(0,0);
#kolor naszego tła red, white, green ,yellow
$mw->configure(-background => 'yellow');
$mw->Button(-text => 'Punkt',-width => 20)->pack();
$mw->Button(-text => 'Linia',-width => 20)->pack();
$mw->Button(-text => 'Łuk ',-width => 20)->pack();
$mw->Button(-text => 'Krzywa',-width => 20)->pack();
$mw->Button(-text => 'Okrąg ',-width => 20)->pack();
$mw->Button(-text => 'Koło',-width => 20)->pack();
MainLoop();
W portalu jest dostępny kod trzech powyższych programów. Można go pobrać z tej strony...
|