#!/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