Introduzione alle librerie grafiche tk in perl
Posted by k8 - Articolo di xero. June 9, 2008, 8:58 am
IProgrammatori.it

Salve a tutti, sono xero che in questo mini tutorial, spiegherò come dare un'interfaccia grafica ai vostri scrip perl. Le tk sono librerie grafiche per il perl che io trovo molto intuitive e semplici da usare. Se non avete la libreria andate sul perl package manager (ppm) e installatela dando il comandi "install Tk". In questo tutorial prima scriverò del codice e poi lo commenterò, in modo da avere sempre un esempio a cui riferirmi.



use Tk; #includo la libreria
$mw=MainWindow->new(); #creo la nuova finestra
MainLoop; #senza il mainloop il programma non funzionerebbe e deve essere messo sempre alla fine, sarebbe il ciclo di creazione della finestra.


Così abbiamo creato una semplice finestra in tre sole righe di codice. Si può abbellire anche con attributi tipo:


use Tk;
$mw=MainWindow->new(-background=>"black");#attributo che colora la finestra di nero
$mw->minsize(500,300);#determina la grandezza minima dela finestra, così se l'utente la ridimenziona può diventare piu grande ma non piu piccola di 500 per 300
$mw->maxsize(500,300);#determina la grandezza minima dela finestra, così se l'utente la ridimenziona può diventare piu grande ma non piu piccola di 500 per 300
$mw->title("titolo");#sarà il titolo della finestra anche se il nome del file cambia.
MainLoop;


Gli oggetti possono essere Frame Label Button MainButton Entry ecc l'inserimento funziona piu o meno così. $finestra_o_frame -> NomeOggetto (attributi) -> pack(attributi); pack aggiunge l'elemento alla finestra, senza di quello l'oggetto non compare. Per i Frame invece il concetto è un po diverso, il frame è come uno spazio in una finestra e si dichiara così: $frame = $finestra_o_frame -> Frame-> pack; si usano frame per creare delle spece di tabelle(invisibili) dove inserire gli oggetti. per es :


non sono bravo in html, ma si capisce.Sono 7 frame 2 grandi sopra , sotto e 3 in fila al centro e 2 sotto , quindi se scrivo un bottone nella finestra in alto a sinistra mi appare al punto a mentre se lo scrivo in alto a sinistra di un frame come il 4 mi esce al punto e, ma non corriamo troppo. Vediamo un'esempio:



use Tk;
$mw=MainWindow->new(-background=>"black");
$mw->minsize(500,300);
$mw->Label(-text=>"I'm xero from Nocopy group",-background=>"black",-foreground=>"green")->pack(-anchor=>"n");
#con -text=>"testo" scrivo, con foreground e background scelgo i colori dello sfondo del label e del testoe con -anchor indico la posizione (n è nord, posso scrivere "ne"= nord est o "sw"=sud owest.
MainLoop;


Ci sono attributi che vengono usati per cambiare colore quando si passa con il mause sopra l'oggetto ossia -activebackground e -activeforeground. Esempio con un bottone:



use Tk;
$mw=MainWindow->new(-background=>"black");
$mw->minsize(500,300);

$mw->Button(-text=>"Chiudimi",
-background=>"black",
-foreground=>"green",
-activebackground=>"green",
-activeforeground=>"black",
-command=>sub{exit(0)})
->pack(-anchor=>"n");
MainLoop;#ho aggiunto l'opzione -command per creare una funzioncina che chiude il programma.

$mw->Label(-text=>"I'm xero from Nocopy group",-background=>"black",-foreground=>"green")->pack(-anchor=>"n");#questo sta dopo il mainloop e non viene visto nella finestra


(se non serve chiudere il programma ma distruggere solo la finestra senza distruggere tutto si fa $finestra->destroy;) Ok abbiamo visto i bottoni e come metterci delle istruzioni. E se volessimo creare un'entry (dove scrivere del testo) e un bottone che se premuto printa il testo in un'altra finestra?


use Tk;
$mw=MainWindow->new(-background=>"black");
$mw->minsize(250,50);

$mw->Button(-text=>"Chiudimi",
-background=>"black",
-foreground=>"green",
-activebackground=>"green",
-activeforeground=>"black",
-command=>sub{exit(0)})
->pack(-side=>"left",-anchor=>"e");#se non uso side non vanno tutti su una riga

$mw->Button(-text=>"Cliccami",
-background=>"black",
-foreground=>"green",
-activebackground=>"green",
-activeforeground=>"black",
-command=>sub{

$sw=MainWindow->new(-background=>"black");

$sw -> Label(-text=>"$testo",
-background=>"black",
-foreground=>"green")->pack;

})->pack(-side=>"right",-anchor=>"w");
$mw->Label(-text=>"I'm xero from Nocopy group",
-background=>"black",
-foreground=>"green")
->pack(-anchor=>"n");

$mw->Entry(-textvariable=>\$testo)#il \ è un bind al testo
->pack(-anchor=>"s");
MainLoop;



Per sottigliezze e migliorie vi mando a tanti libri che si trovano sul web.


Condividi
Stats
Voti 0
Voto medio 0
Visite 2174
Visite uniche 1764
Num.Download 0
DownloadNon disponibile.
Spazio Visitatori
Prima di inviare il tuo commento assicurati che:
  • sia in tema con l'articolo e contribuisca alla discussione in corso
  • non abbia contenuti offensivi nei confronti di chicchessia
  • non abbia contenuti che violini le leggi italiane
  • non contenga indirizzi e-mail








Vota Pessimo 1 / 5 Migliorabile 2 / 5 Buono 3 / 5 Interessante 4 / 5 Speciale  5 / 5
Non ci sono commenti.
Tag Cloudintroduzione librerie tk × librerie grafiche tk × guida perl tk × tk perl library ×

Advertisement

Iprogrammatori.it
| I contenuti di questo sito sono rilasciati sotto Licenza Creative Commons |