Seite 1 von 1

Popup command mit argumenten

Verfasst: Donnerstag 28. Februar 2008, 16:10
von haggi
Ich habe ein popup menu erzeugt. Klappt wunderbar. Ich würde allerdings gerne dem popup command ein Argument übergeben, wie mache ich das?

Bisher mache ich das so:

Code: Alles auswählen

popup.add_command(label = "List", command = listDir )
klappt toll, nur will ich gerne

Code: Alles auswählen

popup.add_command(label = "List", command = listDir("MeinTollesDir") )
machen. Leider wird hier "command" allerdings das Resultat aus listDir("MeinTollesDir") zugewiesen, nicht eine Funktionsreferenz.

Geht das? Unter perl wars recht simpel.

Verfasst: Donnerstag 28. Februar 2008, 17:14
von BlackJack
Du musst an das `command` eine Funktion binden, die dann Deine Funktion mit Argument ausführt. In so simplen Fällen bietet sich eine anonyme Funktion an:

Code: Alles auswählen

popup.add_command(label="List", command=lambda: listDir("MeinTollesDir"))

Verfasst: Freitag 29. Februar 2008, 12:47
von haggi
Super, genau das brauchte ich.

Danke

Verfasst: Dienstag 4. März 2008, 17:44
von haggi
Leider funktionniert das offenbar nicht wenn ich statt eines konstaten Wertes ne Variable nutzen will.

Code: Alles auswählen

for id in range(1,10,1): 
   popup.add_command(label="List", command=lambda: listDir(id))
Wenn ich das mache, dann bekommt listDir() immer nur den letzen Wert der Schleife, hier also '10'.

Gibts da ne Abhilfe?

Verfasst: Dienstag 4. März 2008, 17:57
von Trundle

Code: Alles auswählen

for id in range(1,10,1):
    popup.add_command(label="List", command=lambda id=id: listDir(id)) 

Verfasst: Mittwoch 5. März 2008, 09:28
von haggi
Super, das klappt. Danke.