############### # Error print # ############### prompt$ perl gaugetest2 XS_Tk__Callback_Call error:Can't use an undefined value as an ARRAY reference at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 408. XS_Tk__Callback_Call error:Can't use an undefined value as an ARRAY reference at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 408. Tk::Error: Can't use an undefined value as an ARRAY reference at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 408. Tk::Gauge::maxradius at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 408 Tk::Gauge::centerpoint at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 398 Tk::Gauge::setvalue at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 321 Tk::Gauge::tracew at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 383 Tk::Trace::store at /usr/lib/perl5/Tk/Trace.pm line 94 Tie::Watch::callback at /usr/lib/perl5/Tie/Watch.pm line 399 Tie::Watch::Scalar::STORE at /usr/lib/perl5/Tie/Watch.pm line 453 Tk::Widget::traceVdelete at /usr/lib/perl5/Tk/Trace.pm line 182 Tk::Gauge::delete_traces at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 299 Tk::Gauge::ConfigChanged at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 279 Tk::After::once at /usr/lib/perl5/Tk/After.pm line 90 [once,[{},after#11,idle,once,[ConfigChanged,{},{}]]] ("after" script) Tk::Error: Can't use an undefined value as an ARRAY reference at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 408. Tk::Gauge::maxradius at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 408 Tk::Gauge::centerpoint at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 398 Tk::Gauge::setvalue at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 321 Tk::Gauge::tracew at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 383 Tk::Trace::store at /usr/lib/perl5/Tk/Trace.pm line 94 Tie::Watch::callback at /usr/lib/perl5/Tie/Watch.pm line 399 Tie::Watch::Scalar::STORE at /usr/lib/perl5/Tie/Watch.pm line 453 Tk::Widget::traceVdelete at /usr/lib/perl5/Tk/Trace.pm line 182 Tk::Gauge::delete_traces at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 299 Tk::Gauge::ConfigChanged at /usr/local/share/perl/5.12.4/Tk/Gauge.pm line 279 Tk::After::once at /usr/lib/perl5/Tk/After.pm line 90 [once,[{},after#12,idle,once,[ConfigChanged,{},{}]]] ("after" script) ####### # end # ####### Perl code ######### #!/usr/bin/perl -w use Tk; use Tk::Table; use Tk::Gauge; use strict; use diagnostics; my $mw = MainWindow->new; $mw->geometry("75x75"); $mw->title("Gauge testing"); my $button = $mw->Button(-text => "Null", -command => \&button3_sub)->pack(-anchor=>'center'); our ($alpha,$alphaone,$beta,$betaone,$mh,$output_text,$gaugevar,$cur); sub button3_sub { $mh= (35+(29-1)*6); $cur=$mh; my $hw = $mw -> Toplevel; $hw ->geometry("650x450"); $hw ->title('Health Track (!!!WARNING:DO NOT EXIT THIS WINDOW UNTIL DONE)'); my $hf = $hw -> Frame(-background => 'white')->pack(-ipadx => 250, -fill => 'both', -expand =>'yes'); my $left_frame = $hf -> Frame (-background=>'white')->pack(-side=>'left', -fill => 'y'); my $right_frame = $hf->Frame(-background=>'white')->pack(-ipadx=>150, -fill =>'y', -anchor=>'n',-expand=>1); $betaone = $left_frame->Entry(-background => "green",)->pack(-anchor=>'nw'); my $beta_button = $left_frame->Button(-text => "Alpha Null", -command => \&update_output)->pack(-anchor=>'nw'); $alphaone = $left_frame->Entry(-background => "red",)->pack(-anchor=>'nw'); my $alpha_button = $left_frame->Button(-text => "Alpha Null", -command => \&update_output)->pack(-anchor=>'nw'); $output_text = $left_frame->Text(-height=>5,-width=>15)->pack(-expand=>0,); my $gauge= $right_frame->Gauge( -background => 'white', -bands =>[ { -piecolor => 'green', -minimum=> 50, -maximum=> 100, -tag=> 'Healthy', }, { -piecolor => 'yellow', -minimum=> 25, -maximum=> 50, -tag=> 'Bloodied', }, { -piecolor => 'red', -minimum=> 0, -maximum=> 25, -tag=> 'Critical', } ], -bandplace => 'underticks', -bandstyle=> 'pieslice', -bandwidth=> 0, -caption => 'Current Value', -captioncolor=> 'black', -extent => -180, -from => 0, -hubcolor => 'black', -huboutline => 'blue', -hubradius => 15, -majortickinterval => 10, -majorticklabelplace =>'outside', -finetickinterval => 1, -minortickinterval => 5, -margin =>40, -needles => [ { -arrowshape => [ 12, 23, 6 ], -color => 'black', -command => undef, -format => '%d', -radius => 196, -showvalue => 1, -tag => 'null', -title => 'null', -titlecolor => 'white', -titlefont =>'Helvetica-12', -titleplace => 'south', -variable => \$gaugevar, -width => 5, } ] , -start => 180, -to => 100, )->pack(-fill=>'both',-expand=>1); ##my $gaugebutton1 = $left_frame ->Button(-text => "Update", -command => \&gaugebutton1_sub)->pack(-side=>'bottom'); #currently pointless. will leave in for possible diagnostics. } sub gaugebutton1_sub { $gaugevar=($cur/$mh)*100; }#above sub redundant(?) due to &update_output# sub update_output { my $beta = $betaone->get(); my $alpja = $alphaone->get(); if ($alpha eq "") { $alpha = 0; } if ($beta eq "") { $beta = 0; } $cur=$cur+$beta-$alpha; if ($cur gt $mh){$cur=$mh;} if ($cur lt 0){$cur=0;} my $output = "Current value:\n$cur"; $output_text->delete('0.0', 'end'); $output_text->insert("end", $output); $betaone->delete('0.0', 'end'); $alphaone->delete('0.0', 'end'); $gaugevar=($cur/$mh)*100; } MainLoop; ###end