for schleife geht nicht.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Sven1987h
User
Beiträge: 15
Registriert: Freitag 1. April 2011, 13:40

Moin moin,

warscheinlicht ist die antwort super einfach und ich blickes es gerade einfach nicht :D.
Ich habe ein Array wo alle Buttons einer Gui abgelegt sind und möchte diese in einer for schleife abarbeiten:

Code: Alles auswählen

buttons = ['btn_101', 'btn_102']
for x in buttons:
	print(x)
	haupt_win.x.setEnabled(True)
leider funktioniert das so nicht.

Code: Alles auswählen

AttributeError: 'builtin_function_or_method' object has no attribute 'setEnabled

So aber schon? obwohl dort genau das selbe steht?:

Code: Alles auswählen

for x in buttons:
	print(x)
	haupt_win.btn_101.setEnabled(True)
wäre super wenn mir jemand sagen kann warum nicht und was ich machen muss damit es geht.
MFG
Sven1987h
User
Beiträge: 15
Registriert: Freitag 1. April 2011, 13:40

Misst einige sekunden später hatte ich die Lösung selber gefunden.
zum einen hatte ich in den array ja nur einen String abgelegt und ich habe nicht das ganze object in dem array abgelegt.
Die Lösung ist:

Code: Alles auswählen

buttons = [haupt_win.btn_101,haupt_win.btn_102]
for x in buttons:
            print(x)
            x.setEnabled(True)

Dennoch Danke
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Der Vollständigkeit halber: Das ist kein Array, sondern eine Liste. Das macht in Python einen Unterschied.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und man sollte nicht so generische Namen wie `x` verwenden, dann fällt einem oft auch eher auf wenn Name und Objekt gar nicht zusammenpassen.

Auch Abkürzungen sollten man vermeiden. `haupt_win` ist ein Hauptgewinn? Oder sollte das `haupt_window` heissen? Warum nicht `main_window` oder `hauptfenster`?

`btn_101` ist auch kein guter Name. Zum einen wegen der Abkürzung und dann wegen der nichtssagenden Nummer.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten