#!/usr/bin/perl use warnings; use strict; use Tk; use Tk::NoteBook; require Tk::Pane; use Tk::LabEntry; my $mw = MainWindow->new(); $mw->geometry( "600x500" ); my $book = $mw->NoteBook()->pack( -fill=>'both', -expand=>1 ); my %hash; my @tabs = (1..5); foreach my $tab(@tabs){ $hash{$tab}{'frame'} = $book->add( "Sheet $tab", -label=>"program $tab"); #$hash{$tab}{'frame'} = $book->add( "Sheet $tab", -label=>"program $tab"); } #make a Scolled Pane in every tab, with 2 frames for columns foreach my $tab(@tabs){ $hash{$tab}{'spane'}= $hash{$tab}{'frame'}->Scrolled('Pane',-bg=>'white') ->pack(-expand=>1,-fill=>'both'); #now pack 2 side by side frames in the scrolled Pane $hash{$tab}{'f1'}= $hash{$tab}{'spane'}->Frame(-bg=>'hotpink', -padx=>15) ->pack(-side=>'left',-expand=>1,-fill=>'both',-padx=>15); $hash{$tab}{'f2'}= $hash{$tab}{'spane'}->Frame(-bg=>'lightseagreen',-padx=>15) ->pack(-side=>'right',-expand=>1,-fill=>'both'); } #now make columns foreach my $tab(@tabs){ foreach my $fr('f1','f2'){ #make frames for each pair $hash{$tab}{$fr}{'subframel'} = $hash{$tab}{$fr}->Frame() ->pack(-side=>'left',-expand=>1,-fill=>'both'); $hash{$tab}{$fr}{'subframer'} = $hash{$tab}{$fr}->Frame() ->pack(-side=>'right',-expand=>1,-fill=>'both'); } } #now fill columns foreach my $val qw(IN_DIR IN_LIST OUT_TYPE BYTESWAP OUTPUTAUX ){ foreach my $tab(@tabs){ foreach my $fr('f1','f2'){ $hash{$tab}{$fr}{'subframel'}{'labentry'} = $hash{$tab}{$fr}{'subframel'}->LabEntry(-label => "$val="); $hash{$tab}{$fr}{'subframel'}{$val}{'val'} = "$val-$tab-$fr"; $hash{$tab}{$fr}{'subframel'}{'labentry'}->Subwidget('entry')-> configure(-background=>'yellow', -width => 25, -textvariable => \$hash{$tab}{$fr}{'subframel'}{$val}{'val'}); $hash{$tab}{$fr}{'subframel'}{'labentry'}->configure( -labelPack=>[-side=>'left',-anchor=>'w'], -width => 20, ); $hash{$tab}{$fr}{'subframel'}{'labentry'}->pack(-anchor=>'e'); } } } MainLoop; __END__