#!/usr/bin/perl # only moderately tested !!!!!! use warnings; use strict; use Tk; use Tk::Pane; use Data::Dumper; my %hash; while () { chomp; if(length $_){ ( my ( $key, $val ) = split /,/ ); $hash{$key} = $val; } } #print Dumper(\%hash); my $mw =MainWindow-> new (-title => "Demo"); $mw->geometry('340x300'); my $frame_tl= $mw->Scrolled('Pane', -scrollbars => 'se', )->pack(-expand => 1, -fill => 'both'); my %f; for my $key (sort keys %hash){ $f{$key}{'frame'}= $frame_tl->Frame(-borderwidth =>2, -relief=> 'groove') ->pack(-side => 'top', -fill => 'x'); $f{$key}{'checkbox'}= $f{$key}{'frame'}->Checkbutton( -text=> $key, -command=> sub{ &del_it($key) }, )->pack(-side => 'left', -fill => 'y'); $f{$key}{'label'} = $f{$key}{'frame'}->Label(-relief => 'groove',-text=>" $key " ) ->pack(-side => 'left', -fill => 'y'); $f{$key}{'entry'}= $f{$key}{'frame'}->Entry(-takefocus => 1,-width => 60, -textvariable=> \$hash{$key}) ->pack(-side => 'left', -fill => 'y'); } MainLoop; sub del_it{ my $key = shift; my $frame = $f{$key}{'frame'}; my @w = $frame->packSlaves; foreach (@w) { $_->packForget; } $frame->packForget; $frame_tl->update; $mw->update; } __DATA__ 123,ABC 345,CDE 546,MDJ 987,ASD 543,kjf 937,dhy 098,sdf 867,mnb 321,jhg 567,fgh 834,ctg 912,xcv #### #!/usr/bin/perl use strict; use Tk; my $selected_text; my $mw = tkinit; my $lb = $mw->Scrolled( "Listbox", -scrollbars => "e", -selectmode => "single", )->pack; $mw->Label( -textvariable => \$selected_text )->pack; $lb->insert( 'end', qw/w2200 w2465 W2475 W2420/ ); $lb->bind( '', sub { # I don't use an array because -selectmode eq 'single' my $selection_index = $lb->curselection(); if ( $selection_index eq '' ) { $selected_text = "Nothing selected"; } else { $selected_text = $lb->get($selection_index); $lb->delete($selection_index); } } ); MainLoop;