IProgrammatori.it

Forum programmazione

Forum di supporto alla programmazione in generale e nei principali linguaggi.

It is currently Mon Mar 15, 2010 9:34 pm

All times are UTC + 2 hours




Post new topic Reply to topic  [ 5 posts ] 
Author Message
 Post subject: [Perl] Introduzione alle tk
PostPosted: Fri Jan 26, 2007 3:02 pm 
Newbies
Joined: Fri Jan 26, 2007 1:48 pm
Posts: 15

:D ciao questo è il mio primo articolo per questo forum!

Le tk sono librerie grafiche per il perl che io trovo molto intuitive e semplici da usare. (anche se mi dicono :"ma studiari le gtk")

Se non avete la libreria andate sul perl package manager (ppm) e installatela.

Siccome mi piace spiegare sui source inizio a scrivere qualche riga ben commentata:
Code:
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.


Ecco la vostra gui in 3 righe... (non come in c che devo scriverne 50!).

Si può abbellire la finestra con attributi tipo:
Code:
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
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 dove inserire gli oggetti.
per es :
____________________
|1 |
|___________________|
| | |2 |
|______|______|______|
| |
|___________________|
1 ascii di cacca ma rende l'idea lol, sono 5 frame 2 grandi sopra e sotto e 3 in fila al centro , quindi se scrivo un bottone nella finestra in alto a sinistra mi appare al punto 1 mentre se lo scrivo in alto a sinistra di un frame come il 4 mi esce al punto 2, ma non corriamo troppo.
Vediamo un'esempio:
Code:
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 son oattributi che vengono usati per cambiare colore quando si passa con il mause sopra l'oggetto ossia -activebackground e -activeforeground.
Esempio con un bottone:
Code:
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=>"ne");
MainLoop;#ho aggiunto l'opzione -command per creare una funzioncina che ciude il ptogramma.

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

(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?

Code:
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;


Sono stanco ora, le basi ve le ho date ora a chi interessa si trovano tanti libri su emule
cya

_________________
Image
Stallman nostro, che sei in America, sia santificato il tuo pc, venga la tua licenza, sia fatta la tua volontà così in C++ come in Python, dacci oggi il nostro codice quotidiano, rimetti a noi i nostri pacchetti come noi rimettiamo alle nostre dipendenze e non ci indurre a Vista ma liberaci da Microsoft, Amen


Offline
 Profile  
 Post subject:
PostPosted: Fri Jan 26, 2007 5:32 pm 
Newbies
Joined: Fri Jan 26, 2007 1:48 pm
Posts: 15

eccolo finito con qualche aggiunta.

Code:
use Tk;

sub main1{
$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");

$mw->Label(-text=>"Scrivi qualche cosa e premi cliccami",
-background=>"black",
-foreground=>"green")
->pack(-anchor=>"n");
}


$m = MainWindow -> new(
-background => "cyan");

$b1f = $m->Photo(-file =>"nocopy.bmp");

$b1 = $m -> Button(
-text => "chiudimi",
-background => "black",
-activebackground => "red",
-image => $b1f,
-command => sub {$m -> destroy,main1}
) -> pack();
MainLoop;



e l'immagine è

Image

_________________
Image
Stallman nostro, che sei in America, sia santificato il tuo pc, venga la tua licenza, sia fatta la tua volontà così in C++ come in Python, dacci oggi il nostro codice quotidiano, rimetti a noi i nostri pacchetti come noi rimettiamo alle nostre dipendenze e non ci indurre a Vista ma liberaci da Microsoft, Amen


Offline
 Profile  
 Post subject: Re: [Perl] Introduzione alle tk
PostPosted: Fri Jan 26, 2007 7:48 pm 
Variabile
User avatar
Joined: Thu Jun 15, 2006 8:00 pm
Posts: 258
Location: 127.0.0.1

xero wrote:
Le tk sono librerie grafiche per il perl che io trovo molto intuitive e semplici da usare. (anche se mi dicono :"ma studiari le gtk")


sinceramente sono d'accordo con questi :lol:

cmq i miei complimenti ;)


Offline
 Profile  
 Post subject:
PostPosted: Fri Jan 26, 2007 10:19 pm 
Admin
User avatar
Joined: Tue Jun 06, 2006 4:00 pm
Posts: 2294
Location: Italia

Ehi xero benvenuto! :)
belllissima guida e molto interessante! ;)
bel lavoro davvero :)

_________________
Big-Bug cerca collaboratori.
Cerca di scrivere con un italiano corretto.


Offline
 Profile E-mail  
 Post subject: Re: [Perl] Introduzione alle tk
PostPosted: Sat Aug 01, 2009 9:41 pm 
Newbies
Joined: Sun Feb 22, 2009 4:44 pm
Posts: 3
Location: Marsciano (PG)

Le GTK+ sono librerie più avanzate delle Tk... inoltre la grafica è nettamente migliore ...

_________________
"Per capire le cose, bisogna capire le cose"


Offline
 Profile E-mail  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 5 posts ] 

All times are UTC + 2 hours


 Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: