Python Anfängerfrage

Gast #5307957
Lesenswert?

Hallo!

Ich bin Python-Neuling und habe folgendes Problem:

Bei einer Auflistung, die ich normal mit Labels aus tkinter 
bewerkstellige, platziere ich innerhalb einer for-Schleife Buttons, die 
einen bestimmten Eintrag der Liste löschen sollen.

buttonLoeschen.append(Button(fenster, text="Löschen", command= lambda: 
loescheBt(i)))

Das Problem ist, dass zum Zeitpunkt, wo ich den Button klicke, die 
for-Schleife natürlich fertig ist, sodass i (die Zählvariable der 
for-Schleife) dem Index des letzten Eintrages entspricht.

Somit wird das letzte Element gelöscht, statt dem, wo der Button ist.

Nun suche ich nach einer Möglichkeit, das "i" zu konservieren. Also der 
command soll das i fix behalten, das beim Erstellen des Buttons gültig 
war.

Bitte um Hilfe.
Danke!
Gast #5308085
Lesenswert?

Flo schrieb:
> Verstehe ich das Problem richtig?
>
> Eine for-Schleife erzeugt n Buttons. Der i-te Button soll (nachdem alle
> Buttons erzeugt wurden) das i-te Element aus einer Liste löschen.

Genau richtig!

sven schrieb:
> Kann man nicht die ID oder Namen des Buttons abfragen?

Die Buttons sind auch in einer Liste, man bräuchte also leider auch 
dafür die Variable i.
Gast #5308229
Lesenswert?

Vielleicht helfen auch die functools...
1
# python
2
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
3
[GCC 6.3.0 20170516] on linux2
4
Type "help", "copyright", "credits" or "license" for more information.
5
>>> from __future__ import print_function
6
>>> import functools
7
>>> i=5
8
>>> f = functools.partial(lambda x:print(x), i)
9
>>> f()
10
5
11
>>> i=9
12
>>> f()
13
5

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren