Buttons

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

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.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003