Newsgroup: it.comp.lang.perl
Titolo: AIuto con il modulo Per-tk

Bene sto studiando questo modulo per creare programmi accessibili
anche ai non guru di programmazione, quelli che se gli dici cosa è il
perl ti dico un animale a 3 code. Ma mi sorge un problema con questo
codice:
#!/usr/bin/perl -w
use strict;
use Tk;
#creo la main windows
my $mw=new MainWindow;
$mw->minsize(qw(250 250));
$mw->title('Programma Ore');
#creo la barra de menu soltanto graficamente
my $menu_bar=$mw->Frame(-relief=>'groove', 
			-borderwidth=>'3', 
			-background=>'purple',)->pack(
						     '-side'=>'top', 
						     '-fill'=>'x');
#creo il primo bottone del menu
my $file_mb=$menu_bar->Menubutton(-text=>'Applicazioni',
				  -background=>'purple',
				  -activebackground=>'cyan',
				  -foreground=>'white',
				  )->pack('side'=>'left');
#collego il borrone Apllicazioni->Immissione dati a sub immissione
$file_mb->command(-label=> 'Immissione Dati',
		  -background=>'purple',
		  -activebackground=>'magenta',
		  -command=>\&immissione
		  );
#collego il bottone Applicazioni->riepilogo a sub riepilogo
$file_mb->command(-label=> 'Riepilogo',
		  -background=>'purple',
		  -activebackground=>'magenta',
		  -command=>\&riepilogo
		  );
#Altro menu button in questo caso Help
my $help_mb=$menu_bar->Menubutton(-text=>'Help',
				  -background=>'purple',
				  -activebackground=>'cyan',
				  -foreground=>'white',
				  )->pack('side'=>'right');
#altro collegamento da Help->about a sub about
$help_mb->command(-label=> 'About',
		  -background=>'purple',
		  -activebackground=>'magenta',
		  -command=>\&About
		  );
#packo il restante
my $body=$mw->Frame()->pack(-side => 'top', -fill=>'x');
my $testo=$body->Label(-text=>'Nhar85 Presents')->pack;
my $testo2=$body->Label(-text=>'Conteggio ore lavorative.')->pack;
sub immissione {
#nuova main window
    my $nw= new MainWindow;
    $nw->geometry('400x400');
    $nw->title('Immissione Dati');
 
#scritta
    $nw->Label(-text=>'mese:')->pack;
#input text    
    my $ent0=$nw->Entry(-width=>'20', 
			-background=>'white')->pack;
#scritta
    $nw->Label(-text=>'giorno:')->pack;
#input text
    my $ent1=$nw->Entry(-width=>'20', 
			-background=>'white')->pack;
#scritta
    $nw->Label(-text=>'ore:')->pack;
#input text
    my $ent2=$nw->Entry(-width=>'20', 
			-background=>'white')->pack;
#scritta
    $nw->Label(-text=>'luogo:')->pack;
#input text
    my $ent3=$nw->Entry(-width=>'20', 
			-background=>'white')->pack;
#bottone di sottomissione   
    my $button=$nw->Button(-text=>'Invia', -command=>\&invio)->pack;
}
sub invio{
}
# creo tutto.
MainLoop;
COme faccio ad estrarre i valori che verranno inseriti nei campi di
testo ent0,ent1,ent2,ent3 e meterli in sub invio???
ho provato print my ent0? ma mi da un valore indefinito...

 ho provato print my ent0? ma mi da un valore indefinito...
sub invio{
	print $ent3->get;
}
C'è ancora un problema: $ent3 non è dichiarato nella sub invio, ma lo è 
nella sub immissione, per cui puoi usarlo solo in quest'ultima. Puoi 
allora dichiarare le Entry come globali:
use vars qw/$ent0 $ent1 $ent2 $ent3/;
in cima allo script e poi non renderle lessicali all'interno della sub 
immissione, togliendo il my che le precede.
Info sul Tk ne trovi facendo perldoc Tk, dove ti dà varie info, tra cui 
proprio su dove andare a cercare per info sulle Entry.

     my $button=$nw->Button(-text=>'Invia', -command=>\&invio)->pack;
Segui i consigli di Andrea, oppure modifica la riga sovrastante in:
my $button = $nw->Button( -text => 'Invia', -command => [\&invio,
$ent0] )->pack;
dove tutti gli elementi dopo \&invio, vengono passati alla funzione come
argomenti. Quindi passi i riferimenti degli oggetti a invio e utilizzi
il metodo get per ricavare il testo.
Ciao,
-- 
+--------+ ASCII ribbon campaign ( )
|  kral  |  - against HTML email  X 
+--------+              & vCards / \

proprio su dove andare a cercare per info sulle Entry.
Siete grandi... Grazie di cuore