2010-04-06 6 views
4

J'ai conçu un formulaire d'inscription, sous cette forme après avoir obtenu toutes les valeurs nécessaires je vais cliquer sur le bouton Soumettre.Comment passer des arguments aux sous-routines en Perl/Tk?

Et en cliquant sur ce bouton soumettre je veux appeler une fonction et je veux passer les arguments à cette fonction. J'ai écrit du code à cet effet, mais la fonction est appelée avant d'obtenir les détails (ie) après avoir obtenu les détails dans le formulaire d'inscription, je dois passer ces valeurs à une fonction et je dois valider les valeurs.

Mais ce qui s'est passé était, avant d'obtenir les détails de la fonction appelée.

Répondre

3

La suggestion de Carlos est à sens unique. Une autre consiste à placer un rappel de commande sur le bouton qui lit les valeurs hors du formulaire et appelle votre fonction, peut-être comme ceci.

$button->configure(-command => sub { yourFunc($var1, $var2); }); 

Je suppose que vous avez lié les champs du formulaire aux variables $var1 et $var2 ici; modifier pour s'adapter à votre propre situation bien sûr.

+0

Merci beaucoup. – kiruthika

0

Cela ressemble à un problème vwait. Vérifiez dans la documentation Perl/Tk pour:

$widget->waitVariable(varRef) 

De cette façon, vous êtes sûr que votre code est exécutée uniquement lorsque la variable d'attente est modifiée (c'est lorsque vous cliquez sur le bouton « Soumettre »)

espère que ce aide.

3

Vous avez un certain nombre d'options lorsque vous spécifiez un arbitre de code et des arguments à une liaison à un widget:

$w->configure(-command => [ \&subname, @args ... ]   ); 
$w->configure(-command => [ sub { ... }, @args ... ]   ); 
$w->configure(-command => [ 'methodname', $invocant, @args ... ]); 
$w->configure(-command => [ $invocant, 'methodname', @args ... ]); 

Voir la Tk::callbacks POD pour plus d'informations.

Questions connexes