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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
-command => [\&$curveObj->changeColorPos,$current_color,$i]
qui plante à l'éxecution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.