Labels mit FOR-Schleife erstellen

Fragen zu Tkinter.
Antworten
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

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.
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`).
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

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 :-(
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.
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

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
Antworten