PerlGtk.pl

  
Menu główne
use PerlMongers::Warszawa;
use PerlMongers::Krakow;
NG_gRadio
Perl Tk - część IV
  przez wrares (55 odsłon)
Posiadamy informacje o naszych pracownikach. Dostęp mamy do ich Numerów przydzielonych w trakcie procedury zatrudnienia. Pracownik podał swoje Nazwisko oraz Imię, a my przydzieliliśmy mu także stawkę osobistego zaszeregowania. Chcemy stworzyć strukturę która by sortowała pracowników po przydzielonym numerze. Dlatego wykonamy dwie czynności
Cytat:

1) Budowa odpowiedniej struktury danych do przechowywania potrzebnych informacji
2) Zasilanie tej struktury
3) Budowa elementów prezentacyjnych z wykorzystaniem Tk


Budujemy strukturę danych danych oraz zasilamy ją informacjami
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ł"],                  
);

Jak widać zbudowaliśmy asocjację tablic, w której wpisaliśmy potrzebne informacje dla dalszej obróbki. Oczywiście może to być dowolna struktura. My wybraliśmy taką aby nie komplikować tematu.
Następnie chcielibyśmy pokazać Naszych zatrudnionych pracowników w formie tabelarycznej. Dlatego dziś wykorzystamy z zasobów Tk moduł HList. Poniżej prezentujemy najważniejsze fragmenty z opisem.
#Deklaracja formatki
#ile kolumn, czy ma być nagłówek, rozszerzać się, jak pakować
my $hlist = $mw->HList(-columns => 4, -header => 1)
            ->pack(-expand => 1, -fill => 'both');


#Deklaracja nagłówków 
$hlist->headerCreate(0, -text => "Numer");
$hlist->headerCreate(1, -text => "Nazwisko");
$hlist->headerCreate(2, -text => "Imię");
$hlist->headerCreate(3, -text => "Stawka");

#Teraz przejrzymy wszystkich pracowników,
#każdego po kolei
# i nastepnie wyświetlimy w kolumnach i wierszach

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);
 
}

#a tutaj zakończymy



Jak widzimy możemy swobodnie wyświetlać swoje struktury danych, w komponentach Tk, i robiąc to minimalną ilością kodu. Plik z kodem źródłowym tk_table.zip dostępny jest tutaj.... Gdyby ktoś nie mógł go pobrać prezentujemy kod w całości poniżej. Życzymy udanych eksperymentów.
#!/usr/bin/perl

use warnings;
use strict;
use utf8;


require Tk;
use Tk;
use Tk::HList;

my $mw = MainWindow->new();

#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);

           
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ł"],                  
);


my $hlist = $mw->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);
 
}

MainLoop;

Powrót
Szukaj w PerlGtk.pl
The Perl Job site
Szukaj kodu :