• [^] # Re: chez moi

    Posté par . En réponse au message Checkbutton. Évalué à 1.

    le post precedent donne une piste, mais fausse.

    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 :

    #!/usr/bin/perl -w
    use strict;
    use Tk;
    use Tk::FileSelect;
    use Tk::LabFrame;

    #
    #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/);}

    #
    #}
    sub labelframe_buttons {
    my ($lf, $cb, $var_ref) = @_;

    foreach my $child ($lf->children) {
    next if $child == $cb;
    if ($$var_ref) { $child->select; }
    else { $child->deselect; }

    }

    }

    #
    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,
    -onvalue => 1,
    -offvalue => 0,

    -command => sub { &labelframe_buttons($lf2, $cb, \$lfdummy2)},
    -padx => 0,
    );
    $lf2->configure(-labelwidget => $cb);

    foreach my $str (qw/Option1 Option2 Option3/) {
    my $bt;
    $bt=$lf2->Checkbutton(-text => $str,
    -onvalue => 1,
    -offvalue => 0,

    )->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;