You (probably but not necessarily) need to have some way to keep track your widgets as they are created so you can refer back to them, and, you need to wrap your callbacks in a closure.
#! /usr/bin/perl use warnings; use strict; use Tk; my %widgets; my $mw = MainWindow->new(); my @type_of_processing = ( "type1", "type2", "type1", "type1", "type2" + ); for my $step_no ( 1 .. 5 ) { settings( $step_no, $type_of_processing[ $step_no - 1 ] ); } MainLoop; sub settings { my ( $step, $type ) = @_; $widgets{label}{$step} = $mw->Label( -text => "This is processing step no. $step. ($type) +" )->pack; $widgets{entry}{$step} = $mw->Entry( -width => 20, -state => 'disabled' )->pack; $widgets{checkbutton}{$step} = $mw->Checkbutton( -text => "export results to: ", -variable => \$widgets{status}{$step}, -command => [ sub { if ( $widgets{status}{$step} == 1 ) { $widgets{entry}{$step}->configure( -state => 'norm +al' ); } else { $widgets{entry}{$step}->configure( -state => 'disa +bled' ); } }, $_[0] ] )->pack( -before => $widgets{entry}{$step} ); }
In reply to Re: Perl::Tk Problems with creating widgets using a loop
by thundergnat
in thread Perl::Tk Problems with creating widgets using a loop
by Microcebus
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |