Hi perl monks,
I am having an issue with retrieving values from a dynamically generated group of combo boxes. I am using an array to hold all of these combo boxes. I can only seem to access the most recent combo box and I get an error whenever I try to access the contents of an older combo box (so if I have two combo boxes, I get an error when I try to access the first one).
Here is the error that I get:
Tk::Error: bad listbox index "": must be active, anchor, end, @x,y, or a number at /usr/intel/pkgs/perl/5.8.5/lib/site_perl/5.8.5/x86_64-linux/Tk.pm line 247.
Tk callback for .browseentry.toplevel.frame.listbox
Tk callback for .button1
Tk::__ANON__ at /usr/intel/pkgs/perl/5.8.5/lib/site_perl/5.8.5/x86_64-linux/Tk.pm line 247
Tk::Button::butUp at /usr/intel/pkgs/perl/5.8.5/lib/site_perl/5.8.5/x86_64-linux/Tk/Button.pm line 111
<ButtonRelease-1>
(command bound to event)
Here is my code:
use strict;
use warnings;
use Tk;
my $fieldcounter = 0;
my $textboxrow = 1;
my $fieldbuttonrow = 2;
my @be;
my @listb;
my $mw = tkinit;
$mw -> geometry("400x200");
$be[$fieldcounter] = $mw->BrowseEntry(-label=>"Field") ;
$listb[$fieldcounter] = $be[$fieldcounter]->Subwidget('slistbox')->Sub
+widget('scrolled');
my @content;
tie @content,'Tk::Listbox', $listb[$fieldcounter];
@content = qw/dog
cat
mouse/;
my $button = $mw->Button(-text => 'Add Field',-command => \&addtextbox
+,);
my $button2 = $mw->Button(-text => 'Print texts',-command => \&printte
+xts,);
$be[$fieldcounter] -> grid(-row=>$textboxrow,-column=>2);
$button ->grid(-row=>$fieldbuttonrow,-column=>2,-columnspan=>2);
$button2 ->grid(-row=>$fieldbuttonrow+1,-column=>2,-columnspan=>2);
MainLoop();
sub addtextbox{
$fieldcounter++;
$fieldbuttonrow++;
$textboxrow++;
$be[$fieldcounter] = $mw->BrowseEntry(-label=>"Field");
$listb[$fieldcounter] = $be[$fieldcounter]->Subwidget('slistbox')->Sub
+widget('scrolled');
tie @content,'Tk::Listbox', $listb[$fieldcounter];
@content = qw/dog
cat
mouse/;
$be[$fieldcounter] -> grid(-row=>$textboxrow,-column=>2);
$button->grid(-row=>$fieldbuttonrow,-column=>2,-columnspan=>2);
$button2->grid(-row=>$fieldbuttonrow+1,-column=>2,-columnspan=>1);
}
sub printtexts{
my $field_id;
my $field;
my $fields;
my @fieldslist;
for my $listb_index(0 .. $fieldcounter){
print "listb_index is $listb_index\n";
$field_id = $listb[$listb_index] -> curselection();
$field = $listb[$listb_index] -> get($field_id);
push @fieldslist, $field;
}
$fields = join (':', @fieldslist);
print "fields is: $fields\n";
}