in reply to Tk: Dynamic Radiobuttons toggle problem...

In addition to the clear explanations provided by keszler, here is a small demo that you may find useful, I hope:

use strict; use warnings; use Tk; my $top = MainWindow->new; $top->title("Radio"); my %wb; # radio buttons hash # Create 4 radio buttons trick; # cant't remember from where I got it :( # -variable is set to default (see man page) # -value is lower case of label foreach my $label (qw/Top Left Right Bottom/) { my $lower = lc $label; $wb{$lower} = $top->Radiobutton( -text => $label, -relief => 'flat', -value => $lower, -indicatoron => 0, -width => 7, -command => [\&cb_rbutton,$lower], )->pack; } $top->Button( -text => 'Flash', -width => 10, -command => [\&cb_button, \%wb], )->pack; Tk::MainLoop; sub cb_rbutton { # Radio button selected my $rb = shift; print ucfirst($rb), " is on\n"; return; } sub cb_button { # Button released my $rb = shift; foreach my $label ( keys %{$rb} ) { my $variable = $rb->{$label}->cget('-variable'); if ( ! defined ${$variable} ) { # No check button selected print " Select a button!\n"; last; } # When a check button is selected, all 4 buttons value will be # set to $label of the selected check button # To find out which one is selected: print " CB: $label -> ${$variable}\t"; if ( ${$variable} eq $label ) { print "selected, flashing"; $rb->{$label}->flash; print " ...\n"; } else { print "\n"; } } return; }