Three days ago I had some advice about getting a DynaTabFrame to be seen properly.
This was to add -sticky => 'nsew' to the ->grid settings for the DynaTab and not to use ->pack for the tabbed frames themselves.
Unfortunately this did not work fully for me.
In the attached I have found that I have to use ->pack to see what I want.
If I do not use->pack then I have to add a Label to the parent widget of the Dynatabbed frame (it is called $raised_label).
However when I do this only three of the five labels in the child tab are seen.
Sadly this is not all.
The main system is one where one Perl application calls another Perl application when a button is used.
The second application uses the DynTabFrame.
I have found that I have to remove the –label option for the child tab frame the first time the 2nd application is used to see what is required.
However, I can have a –label option the second time the 2nd application is used.
I use the grid geometry manager and I cannot easily stop doing this.
Can any Monk suggest what is going wrong or is there something amiss with the way the DynaTabFrame works with the grid geometry manager?

# dynatab setting query # use Tk; use Tk::DynaTabFrame; use strict "vars"; my (%frame, %label, %cp_wg, $raised_label, %insideframe, $mw_main, %ta +bbed_frame, $dynatab_name, $tab_Tabbed); my ($dynatab_caption, $dynatab_title, $dynatab_image, $dynatab_colour +, $dynatab_raised_colour); my ($tab_Tabbed, %insideframe, %label); #===============================sub raise ========================= sub dynatab_raise_cb() { my ($current_tab, $current_tab_name, $lbr_str); $current_tab = $tab_Tabbed->cget(-raised); $current_tab_name= $tab_Tabbed->cget(-raised_name); $lbr_str = "current <$current_tab> name <$current_tab_name>"; print "[dynatab_raise_cb] $lbr_str\n"; } #===================================================================== # # sub dynatab_frame_child # # this subroutine creates a child of the given dynatabbed frame # arguments # 0 exisiting tab frame parent # 1 referecne to new tabbed frame # 2 title of new tabbed frame # 3 colour of new tabbed frame # # ==================================================================== sub dynatab_frame_child($$$$$$$) { my ($tab_parent, $ref_child, $dynatab_caption, $dynatab_title, $dynata +b_image, $dynatab_colour ,$dynatab_raised_colour) = @_; print "[dynatab_frame_child] caption <$dynatab_caption> title <$dynata +b_title> image <$dynatab_image> colour <$dynatab_colour> raised <$dyn +atab_raised_colour>\n"; $$ref_child = $tab_parent->add( -caption => $dynatab_caption, -label => $dynatab_title, -tabtip => "Tip for tabno", ) ->pack() ; } #===========main========================= my $mw_Main = MainWindow->new; my $middle_Frame = $mw_Main->Frame(-borderwidth => 4, -relief => 'raised', )->grid(-row => 0, -column => 0); my $color = 'GREY'; my $raisecolor = 'WHITE'; my $side = 'nw'; $tab_Tabbed = $middle_Frame->DynaTabFrame( -font => 'Arial 8', -raisecmd => \&dynatab_raise_cb, -tabcolor => $color, -raisecolor => $raisecolor, -tabside => $side, -tabpadx => 3, -tabpady => 3, -tiptime => 600, -tipcolor => 'white' ) ->grid(-row => 0, -column => 0 , -sticky => 'nsew' ); # required to get something shown when ->pack is not used #$raised_label = $middle_Frame->Label( -width => 100)->grid(-row => 1, + -column => 0); $dynatab_name = 'SNG'; $dynatab_caption = "C1"; $dynatab_title = "Tab 1"; dynatab_frame_child($tab_Tabbed, \$tabbed_frame{$dynatab_name}, $dynat +ab_caption, $dynatab_title, $dynatab_image, $dynatab_colour , $dynata +b_raised_colour); $insideframe{a} = $tabbed_frame{$dynatab_name}->Frame(-borderwidth => +4, -relief => 'raised')->grid(-row => 0, -column => 0); $label{a} = $insideframe{a}->Label(-text => "Text 1 in $dynatab_title +Tabbed Frame")->grid(-row => 1, -column => 0); $label{aa} = $insideframe{a}->Label(-text => "Text 2 in $dynatab_title + Tabbed Frame")->grid(-row => 2, -column => 0); $label{ab} = $insideframe{a}->Label(-text => "Text 3 in $dynatab_title + Tabbed Frame")->grid(-row => 3, -column => 0); $label{ac} = $insideframe{a}->Label(-text => "Text 4 in $dynatab_title + Tabbed Frame")->grid(-row => 4, -column => 0); $label{ad} = $insideframe{a}->Label(-text => "Text 5 in $dynatab_title + Tabbed Frame")->grid(-row => 5, -column => 0); $dynatab_name = 'DOU'; $dynatab_caption = "C2"; $dynatab_title = "Tab 2"; dynatab_frame_child($tab_Tabbed, \$tabbed_frame{$dynatab_name}, $dynat +ab_caption, $dynatab_title, $dynatab_image, $dynatab_colour , $dynata +b_raised_colour); $insideframe{b} = $tabbed_frame{$dynatab_name}->Frame(-borderwidth => +4, -relief => 'raised')->grid(-row => 0, -column => 0); $label{b} = $insideframe{b}->Label(-text => "Text 1 in $dynatab_title +Tabbed Frame")->grid(-row => 1, -column => 0); $label{ba} = $insideframe{b}->Label(-text => "Text 2 in $dynatab_title + Tabbed Frame")->grid(-row => 2, -column => 0); $label{bc} = $insideframe{b}->Label(-text => "Text 3 in $dynatab_title + Tabbed Frame")->grid(-row => 3, -column => 0); $label{bd} = $insideframe{b}->Label(-text => "Text 4 in $dynatab_title + Tabbed Frame")->grid(-row => 4, -column => 0); $label{be} = $insideframe{b}->Label(-text => "Text 5 in $dynatab_title + Tabbed Frame")->grid(-row => 5, -column => 0); MainLoop;


In reply to DynaTabFrame and Grid Geometry Problems by merrymonk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.