Popup command mit argumenten

Fragen zu Tkinter.
Antworten
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

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.
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"))
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Super, genau das brauchte ich.

Danke
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

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?
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Code: Alles auswählen

for id in range(1,10,1):
    popup.add_command(label="List", command=lambda id=id: listDir(id)) 
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Super, das klappt. Danke.
Antworten