Bonjour,
J'ai un petit probleme
Voila, mon programme ci-dessous cree une frame avec 4 boutons.
Le premier (globale option) quand il est active, il active les 3 autres, sinon on active manuellement les 3 autres.
Puis selon les choix, le bouton exec prend en compte les choix et ouvre des fenetres xterm selon les choix.
Mais le probleme tous les choix sont manuels.
Quelqu'un a une solution ?
Je vous remercie d'avance.
#!/usr/bin/perl -w
use strict;
use Tk;
use Tk::FileSelect;
use Tk::LabFrame;
my $fenetre_planet = MainWindow->new();
$fenetre_planet->minsize(qw(250 150));
$fenetre_planet->title(" * * * LA PLANET");
# my ( $cadre_planet ) ;
# $cadre_planet->LabFrame(-label=>PLANET)->pack();
my $lf2 = $fenetre_planet->Labelframe(qw/-pady 2 -padx 2/);
$lf2->grid(qw/-row 0 -column 1 -pady 2m -padx 2m/);
my $lfdummy2;
my $cb;
$cb = $lf2->Checkbutton(
-text => 'Globale option',
-variable => \$lfdummy2,
-command => sub {&labelframe_buttons($lf2, $cb, \$lfdummy2)},
-padx => 0,
);
$lf2->configure(-labelwidget => $cb);
foreach my $str (qw/Option1 Option2 Option3/) {
$lf2->Checkbutton(-text => $str)->pack(qw/-side top -fill x -pady 2/);
}
# &labelframe_buttons($lf2, $cb, \$lfdummy2);
#$fenetre_planet->Button(
# -text => 'Exec',
# -command => sub { exit })->place(-relx => 0.85, -rely => 0.5);
$fenetre_planet->gridColumnconfigure([0, 1], -weight => 1);
MainLoop;
# chez moi
Posté par NeoX . Évalué à 1.
par contre ca ne dit rien si je clique sur option1, option2 et option3
en gros je penses que tu ne fais pas d'action, ou alors l'action plante pile au moment de changer l'etat des boutons si on clique sur globale
[^] # Re: chez moi
Posté par xusnet . Évalué à 1.
je pense que c'est pas la bonne command
-command => sub {&labelframe_buttons($lf2, $cb, \$lfdummy2)},
En shell c'est a peu pres ça.
if selecte button_Globalr = on
alors action liste $button_option
fi
Mais en Perl , c'est certainement tres simple, mais je ne trouve pas
[^] # Re: chez moi
Posté par NeoX . Évalué à 1.
du coup il ne fait rien et c'est pour ca qu'il plante.
[^] # Re: chez moi
Posté par xusnet . Évalué à 1.
sub labelframe_buttons {
my ($lf, $cb, $var_ref) = @_;
foreach my $child ($lf->children) {
next if $child == $cb;
if ($$var_ref) {$child->configure(qw/-state normal/);
} else {$child->configure(qw/-state active/);
}
}
}
[^] # Re: chez moi
Posté par NeoX . Évalué à 1.
mais plutot un truc genre -variable checked
j'ai pas trouvé, par contre j'ai trouvé :
http://lionel.romain.free.fr/checkbutton.html
et mon code fait "presque" ce que tu veux
une hypothese sur ce que je viens de trouver :
on a peut-etre un probleme d'heritage.
les boutons option1 à 3 sont les fils du bouton "global"
du coup la commande labelframe_buttons est peut-etre repercutée sur les actions des fils.
[^] # Re: chez moi
Posté par NeoX . Évalué à 1.
la solution est là
http://perl.enstimac.fr/perl5.6.1/site_perl/5.6.1/sun4-solar(...)
il faut simplement utilise la methode select et deselect pour que les boutons changent d'etat
le code devient donc le suivant :
[^] # Re: chez moi
Posté par xusnet . Évalué à 1.
Effectivement c'est bien un probleme d'heritage.
Je te remercie beaucoup.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.