Dziś wykorzystamy GUI Builder..., aby wspomógł Nas w tworzeniu interfejsów graficznych, podobnie jak DELPHI lub narzędzia Microsoftu. Na początek spójrzcie na zdjęcie..., bo taką formatkę będziemy budować. Formatka została przetestowana w systemach Win32, Linux (Poldek, Kubuntu). W tym projekcie wykorzystaliśmy rozwiązania poruszane w Naszym portalu
Tak jak wspomnieliśmy powyżej, przy budowie formatki skorzystamy z pomocy jaką oferuje GUI Builder. Konstrukcję pokazujemy tutaj.... Ustawianie komponentów na formatce nie jest zadaniem trudny. Kierujemy się ogólnymi wskazaniami jakie oferuje Tk. Jak tworzymy taką formatkę.
Cytat:
1) Uruchamiamy GUI Buildera
2) Dostajemy wybór - w jakim języku programowania oraz jaki zestaw narzędzi GUI preferujemy - my wybraliśmy Perl/Tk
3) Wyczytujemy nasz opis formatki - note.ui
4) W środowisku pojawia się Nasza formatka
5) Formatka zapisywana jest w trzech plikach a) note.pl b) note.ui
c) note_ui.pm
6) Pliki są dostępne w naszym portalu
Na początku kilka uwag, bardzo ważnych
Cytat: 1) Projektując formatkę nie zapisujemy kodu w języku Perl
2) Każdy ponowny zapis formatki zmienia zawartość pliku note.pl, ale tylko w tych fragmentach, które nie mają swoich procedur w pliku note_ui.pm. Warto na to zwrócić uwagę
3) Sposób zachowania komponentów, obsługa procedur itp. , dokonywana jest w pliki note.pl, który edytujemy w dowolnym, ulubionym edytorze.
Teraz rozpoczynamy omawianie pliku note.pl, który będzie obsługiwał Nasze komponenty. Plik który jest generowany przez GUI Builder, jest szablonem który musimy zmienić.
package note;
use utf8;
use Tk::Dialog;
use Tk::HList;
my (%pracownicy) = ();
%pracownicy = (
11 => [11,"Buraczek","Jan","1247,37 zł"],
17 => [17,"Kartofelek","Paweł","1248,22 zł"],
22 => [22,"Pietruszka","Agata","1578,98 zł"],
67 => [67,"Marchewka","Katarzyna","2178,56 zł"],
);
Założyliśmy że kodowanie będzie w utf8. Chcemy wykorzystać komponent Dialogu oferowany przez Tk. Zbudujemy listę Naszych potencjalnych pracowników i umieścimy ją w HList.
sub przycisk_a_command {
my $p = $top->Dialog(
-title => 'Rysowanie Punktu ?',
-text => "Czy jesteś pewien że chcesz narysować\npunkt ?",
-default_button => 'Nie',
-bitmap => 'info',
-buttons => ['Nie','Tak']
);
my $wybor = $p->Show;
if ($wybor eq 'Tak') {
print "Rysujemy Punkt\n";
}
}
Na formatce dodaliśmy kilka przycisków od A do E, i chcemy aby naciśnięcie każdego z nich, uruchomiło okno dialogowe.
note::userinit() if defined ¬e::userinit;
our $top = MainWindow->new();
$top->title("Kartoteka Pracownicza - Portal Perlgtk.pl - Programował wrares 19/03/2010");
$top->resizable(0,0);
$top->geometry('+200+50');
note::ui($top);
my $hlist = $ramka_tabelka->HList(-columns => 4, -header => 1)
->pack(-expand => 1, -fill => 'both');
$hlist->headerCreate(0, -text => "Numer");
$hlist->headerCreate(1, -text => "Nazwisko");
$hlist->headerCreate(2, -text => "Imię");
$hlist->headerCreate(3, -text => "Stawka");
foreach my $pracownicy (sort keys %pracownicy) {
my $numer = $pracownicy{$pracownicy}[0];
my $nazwisko = $pracownicy{$pracownicy}[1];
my $imie = $pracownicy{$pracownicy}[2];
my $stawka = $pracownicy{$pracownicy}[3];
$hlist->add($pracownicy);
$hlist->itemCreate($pracownicy, 0, -text => $numer);
$hlist->itemCreate($pracownicy, 1, -text => sprintf "%s", $nazwisko);
$hlist->itemCreate($pracownicy, 2, -text => sprintf "%s", $imie);
$hlist->itemCreate($pracownicy, 3, -text => sprintf "%s", $stawka);
}
note::run() if defined ¬e::run;
Tk::MainLoop();
Nadaliśmy nową nazwę formatce, zabezpieczyliśmy ją przed zmianą rozmiarów, ustaliliśmy w którym miejscu ekranu ma się pojawić. Następnym krokiem jest konstrukcja listy z grupą Naszych pracowników. Czynności te wykonujemy w edytorze pisząc kod programu w Perlu. Poniżej zamieszczamy link do spakowanego pliku, w którym znajdują się źródła formatki. Link dostępny jest tutaj... dla pliku note.zip
|