in reply to Tk Mainwindow resizing after child destroyed
I will point out that your code is bad programming, because you are trying to clean out your labels by destroying the parent frame, still leaves the old labels laying around, and this will cause a memory gain everytime you do it. Using $widget->destroy usually is a bad thing in Tk. You may be able to get away with it, if you run packForget on all children of the frame, then destroy all the children. You are better off, NOT destroying the frame, just empty it then refill it.#!/usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new(); my $frame = $mw->Frame->pack(); populate(); $frame->Button(-command=>\&recompose, -text=>'do_it')->pack(); MainLoop; sub recompose { $mw->withdraw; $frame->destroy(); $frame = $mw->Frame->pack(); populate(); $mw->packPropagate; $frame->update; $mw->update; $mw->deiconify; } sub populate { for (1..10) { $frame->Label(-text=>$_)->pack(); } }
#!/usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new(); my $frame = $mw->Frame->pack(); populate(); $frame->Button(-command=>\&recompose, -text=>'do_it')->pack(); MainLoop; sub recompose { my @w = $frame->packSlaves; print @w,"\n"; foreach (@w) { $_->packForget; $_->destroy;} populate(); } sub populate { for (1..10) { $frame->Label(-text=>$_)->pack(); } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Tk Mainwindow resizing after child destroyed
by g0n (Priest) on Oct 09, 2007 at 15:58 UTC |