|
cmds.pl |
sub add_button { my $cmd = shift; my $button = $main->Button( '-text' => $cmd, '-command' => sub { system($cmd) }, ); $button->pack('-fill' => 'x'); push(@buttons, $button); if (@buttons > 5) { shift(@buttons)->destroy; } } |
$cmd innerhalb von sub { system($cmd) } bezieht
auf die lokale Variable $cmd der jeweiligen Instanz von
add_button, die die anonyme Prozedur kreiert hat.
| |
Dies gilt auch, wenn add_button jeweils längst
beendet ist. $cmd bleibt in den jeweiligen Inkarnationen
jeweils so lange leben, bis der letzte Verweis darauf
verschwindet (z.B. wenn der Button eliminiert wird).
| |
Mit der Methode destroy wird ein Widget eliminiert.
Der dadurch entstehende freie Platz (falls es zu sehen
gewesen ist) wird auf die bekannte Weise von dem
jeweiligen Geometry-Manager frisch verteilt.
In diesem Beispiel rutschen dabei alle darunter liegenden
Buttons nach oben.
|
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000 |