PerlGtk.pl

  
Menu główne
use PerlMongers::Warszawa;
use PerlMongers::Krakow;
NG_gRadio
Perl Tk - część V
  przez wrares (42 odsłon)
Planowanie rozmieszczenia komponentów na całym płótnie formatki jest zajęciem ekscytującym jak i pracochłonnym. Jeśli mamy elementy które należą do jednej grupy i są powiązane ze sobą logicznie, to chcielibyśmy je razem zgrupować. A jeśli mamy kilka takich grup, to zadanie jest już dość skomplikowane. Aby się w tym wszystkim nie pogubić, wprowadzimy pojęcie ramki. Jeśli ktoś chce porównać to z komponentami Javy, to może w dużym uproszczeniu powiedzieć
Cytat:

1) Cała formatka tworzona metodą MainWindow->new() to w Javie odpowiednik komponentu Frame.

2) Frame lub TFrame w Perlu to odpowiednik komponentu Panel w Javie.



A więc jak widzimy, cała akcja będzie rozgrywać się na komponentach Frame w ekosystemie Perla.
Zadanie które sobie postawiliśmy to Zbudowanie formatki podzielonej na dwie części, W pierwszej jest ogólny opis, natomiast druga posiada 3 części logiczne. W każdym komponencie Frame użyliśmy kilka komponentów TFrame, a w nich komponenty sterujące.
#!/usr/bin/perl

use warnings;
use strict;
use utf8;


require Tk;
use Tk;
use Tk::TFrame;


our $typ = "etatowy";

my $mw = MainWindow->new();
$mw->title("Kartoteka Pracowników");
$mw->geometry('+300+400');

my ($ramka1,$ramka2, $nramka1, $nramka2, $nramka3, $nramka4, $przycisk, $text1) = ();


Powyżej kod prezentuje ogólne ustawienia zmiennych, tworzenie formatki, jej tytuł i sposób wyświetlenia na ekranie.


$ramka1 = $mw->Frame(-relief =>'flat')->pack(-side => 'top', -fill => 'x');
$ramka2 = $mw->Frame(-relief =>'flat')->pack(-side => 'bottom', -fill => 'x');


Nasza formatka ma dwa ramki, są one płaskie, jedna ustawiona jest u góry a druga u dołu, rozciągnięte wzdłuż osi X.

#Kartoteka Pracownika
$nramka1 = $ramka1->TFrame(-label => 'Kartoteka Pracownika')->pack(-side => 'top', -fill => 'x');

$text1 = $nramka1->Label(-text => 'Kartoteka Pracowników firmy Kogutkowo posiada mozliwość ustawienia parametrów')->pack();
$text1 = $nramka1->Label(-text => 'Parametrami są')->pack();
$text1 = $nramka1->Label(-text => '1)  Typ zatrudnienia',
                          -background => 'yellow')->pack(-side => 'left');
$text1 = $nramka1->Label(-text => '2)  Status Rodzinny',
                          -background => 'green')->pack(-side => 'left');
$text1 = $nramka1->Label(-text => '3)  Przycisk sterujące',
                         -background => 'red')->pack(-side => 'left');




W górnej ramce tworzymy ramkę której nadajemy nazwę. Wykorzystujemy komponent Tk-TFrame. W środku wpisujemy cztery teksty, gdzie ich tło jest kolorowe i ustawiamy począwszy od lewej strony

#Typ Zatrudnienia
$nramka2 = $ramka2->TFrame(-label => 'Pracownik')->pack(-side => 'top', -fill => 'x');

my $menadzer = $nramka2->Radiobutton(-variable => \$typ,
                         -text => 'Mendżer',
                         -value =>'menadzer')->pack(-side => 'left');


my $etatowy = $nramka2->Radiobutton(-variable => \$typ,
                         -text => 'Etatowy',
                         -value =>'etatowy')->pack(-side => 'left');


my $godzinowy = $nramka2->Radiobutton(-variable => \$typ,
                         -text => 'Godzinowy',
                         -value =>'godzinowy')->pack(-side => 'left');


W ramach dolnej ramki stworzymy trzy ramki z nazwami. Pierwsza z nich jest wyborem typu pracownika. W tym celu używamy przycisku Radiobutton.

#Przyciski Nawigacyjne
$nramka4 = $ramka2->TFrame(-label => 'Nawigacja')->pack(-side => 'bottom', -fill => 'x');

$przycisk = $nramka4->Button(-text => "Dodaj")->pack(-side => 'left', -fill =>'x');
$przycisk = $nramka4->Button(-text => "Czyść")->pack(-side => 'left', -fill => 'x');
$przycisk = $nramka4->Button(-text => "Anuluj")->pack(-side => 'right', -fill => 'x');
$przycisk = $nramka4->Button(-text => "Usuń")->pack(-side => 'right', -fill => 'x');


Dostępne są także przyciski nawigacyjne. Dwa z nich są po prawej stronie, a dwa pozostałe po lewej.

#Czy ma Raodzinę
$nramka3 = $ramka2->TFrame(-label => 'Rodzina')->pack(-side => 'bottom', -fill => 'x');

my $zona = $nramka3->Checkbutton(
                         -text => 'Żonaty'
                         )->pack(-side => 'left');

my $kawaler = $nramka3->Checkbutton(
                         -text => 'Kawaler'
                         )->pack(-side => 'left');


my $syn = $nramka3->Checkbutton(
                         -text => 'Syn'
                         )->pack(-side => 'left');

my $corka = $nramka3->Checkbutton(
                         -text => 'Córka'
                         )->pack(-side => 'left');


MainLoop();


Wybór statusu rodzinnego pracownika dokonujemy wykorzystując komponent Checkbutton.
Jak nie trudno zauważyć, można pakować komponenty jeden do drugiego. Komponenty ramek umożliwiają zarządzania formatką, poprzez sterowania sposobem rozkładu widżetów na formatce i ich wyświetlania. Dlatego warto rozważyć używanie komponentów Frame lub TFrame . Cały program dostępny jest tutaj...
Powrót
Szukaj w PerlGtk.pl
The Perl Job site
Szukaj kodu :