in reply to Perl::Tk Problems with creating widgets using a loop
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} ); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Perl::Tk Problems with creating widgets using a loop
by Microcebus (Beadle) on Oct 15, 2010 at 09:16 UTC |