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')->Subwidget('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 => \&printtexts,); $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')->Subwidget('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"; }