Thread Table->Label->Popup-Menu: in einer Schleife (5 answers)
Opened by pktm at 2005-12-20 20:03

pktm
 2005-12-20 20:03
#45125 #45125
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich würde gerne eine 9x9 Felder große Tabelle mit Labels füllen, wobei jedes dieser Labels ein Kontextmenu haben soll.
Also dachte ich mir, ich könnte in einer Schleife einfach je ein Label in die Tabelle packen und daran dann den Rechtslick binden um das Menu zu realisieren.

Aber immer, wenn ich das alles in der Schleife machen erhalte ich anschließend eine Fehlermeldung wenn ich das Menu öffnen will:
Quote
Tk::Error: Can't call method "Popup" on an undefined value at C:\Perl\Scripten\Sudoku\main1.pl line 49.
<Button-3>
(command bound to event)


Hier ist der
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
my @felder = ();
my @menus = ();
# z = zeile; s = spalte
for( my $z = 0; $z <= 8; $z++ ){
for( my $s = 0; $s <= 8; $s++ ){

# Was soll gerae angezeigt werden?
my $inhalt = "$z.$s";
#my $inhalt = int( rand(8) + 1 );

# Es wird in einem Label angezeigt
$felder[$z][$s] = $mw->Label(-text => $inhalt,);

# Dingens in Tabelle einfügen
$t->put($z, $s, $felder[$z][$s]);
# Menu für Feld erzeugen
$menus[$z][$s] = $felder[$z][$s]->Menu(
-menuitems => [
[Separator => ""],
],
);
#die Dumper($menus[$z][$s]);
$felder[$z][$s]->bind(
"<Button-3>" => sub {
$menus[$z][$s]->Popup(
-popover => "cursor",
-popanchor => 'nw'
);
}
);
}
}


Die Fehlermeldung kommt, nachdem die GUI gestartet ist und ich versuche mittels einem Rechtsklick auf ein solches Menu zuzugreifen.

Kurioserweise funktioniert die Sache aber, wenn ich außerhalb der Schleife durch Zugriff auf @felder ein Kontextmenu hinzufüge:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
# Menu für Feld erzeugen
$menus[0][0] = $felder[0][0]->Menu(-menuitems => [[Separator => ''],]);
#die Dumper($menus[0][0]);
$felder[0][0]->bind(
"<Button-3>" => sub {
$menus[0][0]->Popup(
-popover => "cursor",
-popanchor => 'nw'
);
}
);


Und nun? Einfach eine zweite Schleife benutzen und die Kirche umfahren (im Sinne von darum herum fahren)?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Table->Label->Popup-Menu: in einer Schleife