in reply to Functions and Tk
Here's an example that works:
#!/usr/bin/perl -w use Tk; my $mw = MainWindow->new(-title=>"Demo"); my $HlpBttn = $mw->Button(-text=>"Make NEW Window", -command=> sub { m +ake_win(); }); $HlpBttn->pack(-padx =>60, -pady =>10); MainLoop; sub make_win { my $win = $mw->Toplevel(-title=>'new window'); my $Bttn = $win->Button(-text=>"CLOSE this window", -command=> sub { close_win($win); } )->pack(-padx =>60, -pady =>10); } sub close_win { my $thiswin = $_[0]; $thiswin->destroy; }
make_win creates a closure in the -command option, creating an anonymous subref that carries around with it an instance of $win. When the "CLOSE this window" button is pressed in a given window, the coderef that is exectuted uses the instance of $win that it carries with it.
Actually, I could have just said $win->Button(yada-yada...-command=> sub { $win->destroy })....
Note that for either way to work, $win must be a lexical, outside the scope of the anonymous coderef.--Bob Niederman, http://bob-n.com
All code given here is UNTESTED unless otherwise stated.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Functions and Tk
by PodMaster (Abbot) on Aug 24, 2003 at 06:07 UTC | |
|
Re: Re: Functions and Tk
by surrealistfashion (Acolyte) on Aug 24, 2003 at 02:50 UTC | |
by bobn (Chaplain) on Aug 24, 2003 at 02:59 UTC | |
by surrealistfashion (Acolyte) on Aug 24, 2003 at 03:10 UTC | |
by converter (Priest) on Aug 24, 2003 at 03:08 UTC | |
by surrealistfashion (Acolyte) on Aug 24, 2003 at 03:18 UTC | |
|
Re: Functions and Tk
by surrealistfashion (Acolyte) on Aug 24, 2003 at 03:48 UTC |