Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^2: resizing problem with Tk appl using PackForget

by monger_39 (Initiate)
on Dec 07, 2011 at 07:56 UTC ( #942176=note: print w/ replies, xml ) Need Help??


in reply to Re: resizing problem with Tk appl using PackForget
in thread resizing problem with Tk appl using PackForget

Hi Anonymous,

// thx for the tip

Your hint indeed fixed to resize the hidden widgets to their original state. Do you perhaps know of an easy way to store/remember the pack arguments for each widget? In my real app the pack arguments are more diverse. What do you mean by "if you make it into a widget" ??

This does leave the problem that after a resize, the 'hide' action does not minimize the container frame. Any idea how to get that fixed?

thx David


Comment on Re^2: resizing problem with Tk appl using PackForget
Re^3: resizing problem with Tk appl using PackForget
by Anonymous Monk on Dec 07, 2011 at 08:31 UTC

    Do you perhaps know of an easy way to store/remember the pack arguments for each widget?

    Make it a widget (read object)

    my $rememberer = MakeHideDaddyChildButton( -buttonDaddy => $top_frame, -hidersDaddy => $mw, # gets resized -hiders => [ $top_frame, $middle_frame ], #daddys kiddys ); $rememberer->pack;

    This does leave the problem that after a resize, the 'hide' action does not minimize the container frame. Any idea how to get that fixed?

    Um, repack the container frame (or its parent, or mainwindow ) .... or better idea, only ever forget/repack the container frame

    Might need to resize (->geometry)

    I'd have posted an example, but I was already working on this one, keep shooting, and watch the canvas resize :) the mainwindow doesn't resize

    #!/usr/bin/perl -- use strict; use warnings; use Tk; my $packArgs = do { my @packargs = ( [ qw/-expand 0 / ], [ qw/-expand 1 -fill x / ], [ qw/-expand 1 -fill y / ], [ qw/-expand 1 -fill both / ], ); my $ix = -1; my $xx = @packargs ; sub { $ix++; warn $ix % $xx ; return @{ $packargs[ $ix % $xx ] }; }; }; my $mw = tkinit; $mw->Button( -text => 'BANG!', -command => \&bangBang )->pack(qw/-side top -anchor n/); my $ca = $mw->Canvas( background => 'white' ) ->pack( $packArgs->() ); $ca->createOval( 50, 50, 100, 100, -fill => 'pink', ); MainLoop; exit 0; sub bangBang { my $b = $Tk::event->W; $mw->Busy; $b->configure(-state => "disabled"); my $text = $b->cget(qw/ -text /); unless( $text =~ s/(\d+)/ $1 + 1 /e ){ $text .= " 1"; } $b->configure( -text => $text); $ca->packForget; $mw->update; sleep 1; $ca->pack( $packArgs->() ); $mw->Unbusy; $b->configure(-state => "normal"); $mw->update; }
      I like the packArgs trick. Also easy to add an arg to the sub for selecting one of the options.

      the canvas within this BANG app resizes fine for each of the chosen packArgs.

      But pls try this:
      * split the PackForget() and pack() over 2 buttons (show, hide) one containing the packForget, the other the pack
      * start the app, and resize the main window
      * then hit 'hide'

      The canvas and mainwindow are not resized.
      I seem to be missing the point about the resizing through a call to geometry. Can't find a hint in the docs either.

        But pls try this:

        No thanks, I'm no monkey. If you have modified my program, post the new program :)

        To get , natural geometry, that disregards a users resizing, that doesn't change position on screen, use undef

        $mw->geometry( undef );

        I'm still not a monkey, play along

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://942176]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (9)
As of 2014-07-25 13:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (171 votes), past polls