Seite 1 von 1

Button Command Funktionen nur ohne Argumente???

Verfasst: Donnerstag 7. Dezember 2006, 18:12
von laetitia
Hallo!

Habe das folgende Problem:
In einer kleinen GUI Anwendung hab ich mir einen Array von Buttons erstellt.
Diesen Buttons würde ich jetzt gerne eine Funktion mitgeben, die ausgeführt wird, wenn man den Button anklickt.
Das funktioniert auch, aber nur solange die Funktion keine Argumente hat.
Sobald die Funktion irgendwelche Argumente hat, passiert folgendes:
Sie wird noch vor dem main loop ausgeführt, und später (im mainloop) passiert gar nichts mehr, auch nicht, wenn ich den Button anklicke.

Keine Ahnung, woran das liegt, vielleicht kann mir jemand helfen.
Das wäre phantastisch!
Gruß, Laetitia

Verfasst: Donnerstag 7. Dezember 2006, 18:39
von schlangenbeschwörer
Hi laetitia,
wenn du deinen Code zeigst, kann dir hier meistens mehr geholfen werden. Hast du's schon mit lambda probiert?

Code: Alles auswählen

Button(master,command=lambda(funktion(arg1,arg2))
Gruß, jj

Verfasst: Freitag 8. Dezember 2006, 09:36
von laetitia
hi jj!

hier ist das stückchen code.

Code: Alles auswählen

for z in range(15):
    bIncT.append(Button(fMF, text="+", command=lambda: increase(0,z)))
    bIncT[z].place(relx=0.06+0.06*z, rely=0.05, anchor=CENTER)
vielen dank für den lamba hinweis! das funktioniert schon mal, jetzt bleibt mir noch das problem:
wenn man einen der buttons drückt, dann wird increase(0,14) aufgerufen - 14 der wert von z nach dem loop. aber eigentlich sollte ja zb increase(0,5) aufgerufen werden wenn man knopf 5 anklickt.

lieben dank für die unterstützung...

Verfasst: Freitag 8. Dezember 2006, 11:26
von pyStyler
hi,
teste mal ob es so geht.

Code: Alles auswählen

for z in range(15):
bIncT.append(Button(fMF, text="+", command=lambda z=z: increase(0,z)))
bIncT[z].place(relx=0.06+0.06*z, rely=0.05, anchor=CENTER) 

Verfasst: Freitag 8. Dezember 2006, 12:56
von laetitia
Ja, das läuft!
Vielen lieben Dank!!!
Gruß, Laetitia