Objektname mit Variable

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
monny
User
Beiträge: 3
Registriert: Samstag 21. März 2015, 10:25

Hallo,

ich bin Python-Neuling und brauch eure Hilfe bei folgendem Problem:
Ein Widget wurde mit Qt-Designer erstellt und im Programm geladen. In diesem Widget befinden sich nun 6 "frames" die ein Foto verdecken.
Ich möchte nun in einer For-Schleife jedes dieser Frames verändern. Vorher erstelle ich eine Liste, die die Namen laut Qt-Designer als Strings enthalten um sie in der Schleife an den "Qt-Aufruf" zu übergeben:

Code: Alles auswählen

Frames = ["frame1", "frame2", ...]
.
.
def raten():
    for each in Frames:
        w.each.setAutoFillBackground(0)
Dieser Code funktioniert leider nicht da das Argument "each" natürlich nicht im Widget bekannt ist.
Wie kann ich den Inhalt der Variable an den Aufruf übergeben? Vielleicht ist auch mein Ansatz total falsch?!

Gruß Markus
Benutzeravatar
Madmartigan
User
Beiträge: 200
Registriert: Donnerstag 18. Juli 2013, 07:59
Wohnort: Berlin

Du legst da ja auch strings in die Liste. Damit weiß self natürlich nichts anzufangen.
Stattdessen könntest du, wenn du so vorgehen möchtest, die Widgets direkt in die Liste packen.

Bsp:
Der Objektname der Frames ist tatsächlich frame_1, frame_2, ... usw.
Dann wie folgt:

Code: Alles auswählen

frames = [self.frame_1, self.frame_2, ... usw.]

def raten():
    for frame in frames:
        frame.setAutoFillBackground(0);
monny
User
Beiträge: 3
Registriert: Samstag 21. März 2015, 10:25

Natürlich! :roll:
Das funktioniert natürlich wie erwartet.
Vielen Dank!
Sirius3
User
Beiträge: 17753
Registriert: Sonntag 21. Oktober 2012, 17:20

@monny: immer wenn man anfängt, Variablen durchzunummerieren, will man eigentlich von Anfang an eine Liste haben und nicht erst bei Bedarf eine erstellen. Die Frames werden ja irgendwo erzeugt, und das hoffentlich schon in einer for-Schleife, die dann automatisch zu einer Liste von Frames führt.
monny
User
Beiträge: 3
Registriert: Samstag 21. März 2015, 10:25

Hallo Sirius,

das Problem war das ich das widget mit dem Designer erstellt und somit die Namen händisch vergeben habe. Ich bin nun auf die Erstellung mit tkinter umgesattelt. Ich denke so habe ich doch mehr Kontrolle...
Antworten