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
Button Command Funktionen nur ohne Argumente???
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Hi laetitia,
wenn du deinen Code zeigst, kann dir hier meistens mehr geholfen werden. Hast du's schon mit lambda probiert?
Gruß, jj
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))
hi jj!
hier ist das stückchen code.
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...
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)
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...
hi,
teste mal ob es so geht.
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)