2014-03-31 4 views
0

Я создаю список контрольных кнопок в perl tk, используя цикл.Checkbutton in perl Tk выбирает все опции

$i=1; 
    $n=5; 
    @x=1; 
    while($i <= $n){ 
    $mw->Checkbutton(->text=>$i,-variable=>\$ckval,->command=>sub{ 
       if($ckval){print $i} 
    })->pack; 
    [email protected]; 
    } 

Правильное значение i напечатано на экране, но все контрольные кнопки, по-видимому, выбраны. Как мне избежать этого? Заранее спасибо.

ответ

0

Все контрольные кнопки используют одну и ту же переменную $ ckval. Может быть, вам нужен радиоблок?

0

@ Славен прав: вы используете ту же переменную. Вместо этого вы можете использовать хеш-таблицу или массив.

my $i=1; 
my $n=5; 
my $incr=1; 
my @ckval; 
while($i <= $n){ 
    $mw->Checkbutton(-text=>$i,-variable=>\$ckval[$i],->command=>sub{ 
      if($ckval[$i]){ print $i; } 
    })->pack; 
    $i=$i+$incr; 
}