Seite 1 von 1

for schleife geht nicht.

Verfasst: Samstag 29. Februar 2020, 12:03
von Sven1987h
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

Re: for schleife geht nicht.

Verfasst: Samstag 29. Februar 2020, 12:11
von Sven1987h
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

Re: for schleife geht nicht.

Verfasst: Samstag 29. Februar 2020, 12:40
von einfachTobi
Der Vollständigkeit halber: Das ist kein Array, sondern eine Liste. Das macht in Python einen Unterschied.

Re: for schleife geht nicht.

Verfasst: Samstag 29. Februar 2020, 15:47
von __blackjack__
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.