I'm having a problem updating my label variables in a ptk app. i have a number of frames and sub frames, depending on a configuration file. After reading the config file, the app draws however many frames as needed. I use a foreach loop to create all my widgets. now I'm having a problem updating these widgets from hash variables pulled from a dbm file. Its supposed to just basically monitor a set of dbm files from another app i have running. below is the basic framework of the code (unneeded sections removed for brevity):
$mw = MainWindow->new; $pane = $mw->Scrolled("Pane", -scrollbars => 'oe', -sticky=>'new')->pack(-side=>top, -expand=>1, -fill=>'both', -anchor=>n); foreach my $host(@host_list) { $frame="frame_$host"; $$frame = $pane->Frame(-borderwidth=>5, -relief=>raised, -label=>"$host")->pack(-side=>top, -expand=>1, -fill=>'x'); foreach my $db(@$host) { $dbframe = "dbframe_$db"; $dbprogressbar = "progressbar_$db"; $$dbframe = $$frame->Frame(-borderwidth=>5, -relief=>groove, -height=>50, -width=>800)->pack(-side=>top, -anchor=>w, -expand=>1, -fill=>'x'); $$dbframe->Label(-text=>"$db",-font=>"courier20bold",-relief=>fl +at)->grid(-column=>0,-row=>0,-sticky=>'nsew'); $$dbframe->Label(-text=>"Phase:",-relief=>flat)->grid(-column=>1 +,-row=>1,-sticky=>'ew'); $$dbframe->Label(-text=>"Mode:",-relief=>flat)->grid(-column=>3, +-row=>0,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$$db{phase},-relief=>sunken)->g +rid(-column=>2,-row=>1,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$$db{mode},-relief=>sunken)->gr +id(-column=>4,-row=>0,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$$db{state},-relief=>flat,-back +ground=>green)->grid(-column=>0,-row=>1,-sticky=>'nsew'); $$dbframe->Label(-text=>'Date:',-relief=>flat)->grid(-column=>3, +-row=>1,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$$db{date},-relief=>sunken)->gr +id(-column=>4,-row=>1,-sticky=>'ew'); $$dbframe->Label(-text=>'Group:',-relief=>flat)->grid(-column=>5 +,-row=>0,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$$db{group},-relief=>sunken)->g +rid(-column=>6,-row=>0,-sticky=>'ew'); $$dbframe->Label(-text=>'Events:',-relief=>flat)->grid(-column=> +5,-row=>1,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$$db{events},-relief=>sunken)-> +grid(-column=>6,-row=>1,-sticky=>'ew'); $$dbframe->Label(-text=>'Errors:',-relief=>flat)->grid(-column=> +7,-row=>1,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$$db{hard},-relief=>sunken)->gr +id(-column=>8,-row=>1,-sticky=>'ew'); $$dbframe->Label(-text=>'StartTime:',-relief=>flat)->grid(-colum +n=>7,-row=>0,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$dbstart,-relief=>sunken)->grid +(-column=>8,-row=>0,-sticky=>'ew'); $$dbframe->Label(-text=>'CycleTime:',-relief=>flat)->grid(-colum +n=>9,-row=>0,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$dbcycle,-relief=>sunken)->grid +(-column=>10,-row=>0,-sticky=>'ew'); $$dbframe->Label(-text=>'EndTime:',-relief=>flat)->grid(-column= +>11,-row=>0,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$dbend,-relief=>sunken)->grid(- +column=>12,-row=>0,-sticky=>'ew'); $$dbframe->Label(-text=>'LastUpdate:',-relief=>flat)->grid(-colu +mn=>11,-row=>1,-sticky=>'ew'); $$dbframe->Label(-textvariable=>\$$db{update},-relief=>sunken)-> +grid(-column=>12,-row=>1,-sticky=>'ew'); } } while(1) { foreach my $host(@host_list) { foreach my $db(@$host) { $datafile="$datadir/$host/$db"; $dbframe = "dbframe_$db"; dbmopen(%DB, "$datafile", undef); %$db = %DB; $mw->update; dbmclose(%DB); } } $mw->after(1000); }
Many Thanks in advance.
In reply to tk loop updating by quantumsuperposition
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |