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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.