Popup command mit argumenten

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

Popup command mit argumenten

Beitragvon haggi » Donnerstag 28. Februar 2008, 16:10

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

Beitragvon BlackJack » Donnerstag 28. Februar 2008, 17:14

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:

Beitragvon haggi » Freitag 29. Februar 2008, 12:47

Super, genau das brauchte ich.

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

Beitragvon haggi » Dienstag 4. März 2008, 17:44

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

Beitragvon Trundle » Dienstag 4. März 2008, 17:57

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:

Beitragvon haggi » Mittwoch 5. März 2008, 09:28

Super, das klappt. Danke.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder