|
Posted by vorticitywolfe on December 24, 2007, 1:23 pm
Please log in for more thread options
Hello,
I have a gui which reads a lot of data and fills in a table of entry
widgets with the updated values for certain variables. I want to make
it more dynamic and be able to creates x by y number of entry widgets
on the fly. Right now, I have a program that works, but I have
thousands of lines of repeated code and it just keeps getting more
difficult to keep track of everything, particularly when I want to
change one thing. I wrote a previous post about defining variables
within a for loop, which sounded good to me until I read some of the
other posts on why this is bad. Hashes seem like they would work for
this, but as a novice, it seems a little over my head on how to
accomplish this.
From here on, I think the code can be cleaned up and I should only
have to define it once while still maintaining the flexibility to add
more rows/columns. Is that possible?
# N ROWS
################################################
@stn=(0...N-1);
show/hide quoted text
my $left2a = $top->Frame()->pack(-side=>'left',-pady=>2,-padx=>7);
# N Columns
################################################
show/hide quoted text
my $z0=$left2a->Label(-text=>'Time (Z)',)->pack();
my $z1=$left2a->Entry(-justify=>'center',-background=>'light green',-
width=>5,-borderwidth=>2,-relief=>'sunken')->pack();
my $z2=$left2a->Entry(-justify=>'center',-background=>'light green',-
width=>5,-borderwidth=>2,-relief=>'sunken')->pack();
my $z3=$left2a->Entry(-justify=>'center',-background=>'light green',-
width=>5,-borderwidth=>2,-relief=>'sunken')->pack();
my $z4=$left2a->Entry(-justify=>'center',-background=>'light green',-
width=>5,-borderwidth=>2,-relief=>'sunken')->pack();
my $z5=$left2a->Entry(-justify=>'center',-background=>'light green',-
width=>5,-borderwidth=>2,-relief=>'sunken')->pack();
my $z6=$left2a->Entry(-justify=>'center',-background=>'light green',-
width=>5,-borderwidth=>2,-relief=>'sunken')->pack();
my $z7=$left2a->Entry(-justify=>'center',-background=>'light green',-
width=>5,-borderwidth=>2,-relief=>'sunken')->pack();
# FIRST STATION
################################################################
if ($string =~/$stn[0]/){
if($string =~ m/\d\d(\d\d\d\d)Z/){#if($string =~ m/(\d\d\/d\d)/){
if (defined($1)) {
$time=$1;
}
}else{
$time="M";
}
show/hide quoted text
$z1->delete('0.0','end');
$z1->insert('1.0',$time);
}
I hope this is clear enough, if not feel free to ask. Any suggestion
is helpful.
Thanks,
Jonathan
|