Seite 1 von 1

Labels mit FOR-Schleife erstellen

Verfasst: Samstag 14. Juni 2014, 20:34
von Hartmannsgruber
Servus Leute,

ich hab mal wieder eine Frage:
Ich arbeite an einen kleinen GUI-prgramm, in diesen Programm sind mehrere Label-elemente vorhanden, die untereinander stehen.
Gibt es eine Möglichkeit, mehrere solcher Widgets durch eine for-Schleife zu erstellen?
Meine bisherigen Versuche sind gescheitert.
Script wurde auf die wesentlichen Teile reduziert, der Fehler liegt in diesen Abschnitt.

Code: Alles auswählen

ausgabefelder = (("Bezeichnung", "bezeichnung_label", "bezeichungsfeld"),
                 ("Artikelnummer", "artikelnr_label", "artikelnrfeld"),
                 ("Gebinde", "gebinde_label", "gebindefeld"),
                 ("Lieferant", "lieferant_label", "lieferantfeld"),
                 ("Preis", "preis_label", "preisfeld"),
                 ("Bestand", "bestands_label", "bestandsfeld"))

for feld in ausgabefelder:
    feld[1] = tk.Label(hauptfenster, text=feld[0])
    feld[1].grid(column=str(spalte), row=str(zeile))
nach dem ausführen erscheint folgende Fehlermeldung:
TypeError: 'tuple' object does not support item assignment
Mir ist mittlerweile klar geworden, das ich einen String nicht als Variablenname einsetzten kann.
Wie löst man aber nun etwas solches? :(
Bei Großprojekten, können die Entwickler ja auch nicht alle Widgets einzeln einprogrammieren.

Re: Labels mit FOR-Schleife erstellen

Verfasst: Samstag 14. Juni 2014, 20:39
von BlackJack
@Hartmannsgruber: `feld` ist ein Tupel und Du versuchst da einen Index neu zuzuweisen, das sollte klar sein, dass das nicht geht. Ich verstehe hier auch nicht was Du denn dachtest was das bringen soll.

Wenn Du Zeichenketten als ”Variablennamen” haben möchtest, dann verwende ein Wörterbuch (`dict`).

Re: Labels mit FOR-Schleife erstellen

Verfasst: Samstag 14. Juni 2014, 20:53
von Hartmannsgruber
Das mit den dicts. ist klar, ich meinte aber,
ob man die einzelnen Einträge eines Tupels mithilfe einer FOR-Schleife zu Variablennamen eines Labels aus tkinter machen kann.
Also das ich nicht 3mal das gleiche schreiben muss, sondern es vom Rechner schreiben lasse.

also ungefähr so:

Code: Alles auswählen

tuple = (a, b,c)

for element in tuple:
    element = Label(main, text="HierkönnteIhreWerbungstehen")
    element.pack()
Dieses Probeschnippsel funktioniert nicht, dass weiß ich, aber wie kann ich das lösen?
Ich weiß, das sich das grad total dämlich anhört, aber ich weiß nicht wie es anders funktionieren soll :-(

Re: Labels mit FOR-Schleife erstellen

Verfasst: Samstag 14. Juni 2014, 20:58
von BlackJack
@Hartmannsgruber: Nimm dafür ein Wörterbuch und den ”Namen” als Schlüssel und was immer Du an den Namen binden wolltest als Wert.

Re: Labels mit FOR-Schleife erstellen

Verfasst: Samstag 14. Juni 2014, 21:54
von Hartmannsgruber
Ach man bin ich doof... sry, aber ich bin wohl gerade echt richtig am Schlauch gestanden :-(
Trotzdem vielen Dank für die nette Hilfe :-D