Thread Button dyn. mit Array erzeugen (7 answers)
Opened by Hagen at 2007-11-18 23:23

Hagen
 2007-11-18 23:23
#102543 #102543
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich versuche gerade Buttons dynamische zu erzeugen. Leider tritt dabei ein Fehler auf, den ich (bisher) nicht so ganz verstehen.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;
use Tk;
...
  my $mainw = new MainWindow(-title => "TK Scrip-Starter");
...
  # create buttons
  my @btn;
  for (my $i = 0; $i < @subs; $i++) {
    print "--> $subs[$i]\n";
    $btn[$i] = $mainw->Button(-text    => 'sub "'.$subs[$i].'" ('.$i.')',
                              -anchor => 'w',
                              -command => sub { print "-".$subs[$i]."-".$i."\n"; },  
                              )
    ->pack();
    } # for 
...
  MainLoop;


Die print Anweisung macht noch keinen wirklichen Sinn, ist mehr für die Testphase. Allerdings bereitet genau diese ein Problem.

Der Button-Text wird richtig und wie erwartet dargestellt. Aber innerhalb der print-Anweisung wird immer auf ein nicht vorhandenes Element zugegriffen ($i ist größer als @subs). Wenn z.B. @subs 2 Elemente entält, wird bei beiden (!) erzeugten Buttons auf subs[2] zugegriffen.

Ich verstehe aber nicht warum bzw. wie man das ändern könnte.
Gruß
Hagen

View full thread Button dyn. mit Array erzeugen