Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

How to pack 4 panes in 2 rows like quarters (NW, NE, SW, SE)?

=================================
another panes... (all-page-wide)

================
NW PANE | NE PANE
================
SW PANE | SE PANE
================

I killed 2 whole days trying all possible combinations of -side, -after, and -anchor options. Everything is wrong...

Grid geometry manager doesn't suit me because I need Tk::Adjuster that works with pack only.

Thanks.
  • Comment on Perl::Tk, a question about pack geometry manager

Replies are listed 'Best First'.
Re: Perl::Tk, a question about pack geometry manager
by keszler (Priest) on Oct 23, 2009 at 09:31 UTC
    You can use Frames to assist in positioning:
    #!perl use strict; use Tk; my $mw = tkinit( -title => 'Tk::Pane example'); my $tf = $mw->Frame->pack; my $bf = $mw->Frame->pack; my $nw = $tf->Scrolled('Pane', Name => 'NW', -scrollbars => 'se',)->pa +ck( -side => 'left'); my $ne = $tf->Scrolled('Pane', Name => 'NE', -scrollbars => 'se',)->pa +ck( -side => 'left'); my $sw = $bf->Scrolled('Pane', Name => 'SW', -scrollbars => 'se',)->pa +ck( -side => 'left'); my $se = $bf->Scrolled('Pane', Name => 'SE', -scrollbars => 'se',)->pa +ck( -side => 'left'); my $nwl = $nw->Label( -text => 'NW')->pack; my $nel = $ne->Label( -text => 'NE')->pack; my $swl = $sw->Label( -text => 'SW')->pack; my $sel = $se->Label( -text => 'SE')->pack; MainLoop;
      Modified to do with Tk::grid manager
      #!perl use strict; use Tk; my $mw = tkinit( -title => 'Tk::Pane example'); my $bf = my $tf = $mw->Frame(-bg=>'yellow')->grid( -row => 2, -column +=> 2 ); my $nw = $tf->Scrolled('Pane', Name => 'NW', -scrollbars => 'se',)->gr +id( -row => 0, -column => 0 ); my $ne = $tf->Scrolled('Pane', Name => 'NE', -scrollbars => 'se',)->gr +id( -row => 0, -column => 1 ); my $sw = $bf->Scrolled('Pane', Name => 'SW', -scrollbars => 'se',)->gr +id( -row => 1, -column => 0 ); my $se = $bf->Scrolled('Pane', Name => 'SE', -scrollbars => 'se',)->gr +id( -row => 1, -column => 1 ); my $nwl = $nw->Label( -text => 'NW')->pack; my $nel = $ne->Label( -text => 'NE')->pack; my $swl = $sw->Label( -text => 'SW')->pack; my $sel = $se->Label( -text => 'SE')->pack; MainLoop;
      Thanks a lot! It works!