Callback : Variable dans un -command
Bonjour,
Je dois afficher des boutons qui doivent appeler la même fonction avec un paramètre différent
Je boucle quelques fois sur $i, $curveObj est un objet que j'ai crée
Code:
1 2 3 4 5 6
| $frame->Button(
-text => "$color",
-command => sub {
$current_color=$curveObj->changeColorPos($current_color,$i);
}
)->pack(); |
Ce code fonctionne mal vu que c'est la dernière valeur de $i qui est envoyé quelque soit le bouton sur lequel on pousse.
J'ai donc essayé
Code:
-command => [\&$curveObj->changeColorPos,$current_color,$i]
qui plante à l'éxecution
Code:
1 2 3 4 5 6
| Tk::Error: Not a CODE reference at ./kandela.pl line 546.
Tk callback for .frame1.frame5
main::subFrameCurve at ./kandela.pl line 546
main::useCurve2 at ./kandela.pl line 2297
<ButtonRelease>
(command bound to event) |
j'ai donc essayé
Code:
1 2 3 4 5 6
| sub ccp {
my ($cc,$i)=@_;
$curveObj->changeColorPos($cc,$i);
}
[....]
-command => [\&ccp,$current_color,$i] |
qui fonctionne.
Ma question, peut-on écrire cela en une ligne (comme le deuxième essai), mais aussi, comment récupérer une variable de retour ($current_color dans le premier exemple) ?
Merci.