Button Command Funktionen nur ohne Argumente???

Fragen zu Tkinter.
Antworten
laetitia
User
Beiträge: 4
Registriert: Donnerstag 7. Dezember 2006, 18:03

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
schlangenbeschwörer
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?

Code: Alles auswählen

Button(master,command=lambda(funktion(arg1,arg2))
Gruß, jj
laetitia
User
Beiträge: 4
Registriert: Donnerstag 7. Dezember 2006, 18:03

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...
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

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) 
laetitia
User
Beiträge: 4
Registriert: Donnerstag 7. Dezember 2006, 18:03

Ja, das läuft!
Vielen lieben Dank!!!
Gruß, Laetitia
Antworten