Seite 1 von 1

Mit Schleife über Variablennamen iterieren

Verfasst: Samstag 5. März 2016, 18:27
von Shiva420
Hey leute!

Ich habe ein recht banales Problem und komme schlichtweg nicht auf die Lösung, vllt kann mir ja jemand fix nen Denkanstoß geben. :)

Folgendes Geschehen:

Ich habe mit pyqt eine GUI gebastelt und in der gui sind 25 kleine vierecke als label-bilder (Das Spielboard von satoshimines)
Während der Bot läuft verändert sich das Bild der 25 Teile konstant.
Dies musste ich allerdings bei jedem Bild etwas peinlich umsetzen, folgender code:

Code: Alles auswählen

	#Reset GUITiles
        self.tile1.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile2.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile3.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile4.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile5.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile6.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile7.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile8.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile9.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile10.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile11.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile12.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile13.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile14.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile15.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile16.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile17.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile18.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile19.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile20.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile21.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile22.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile23.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile24.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
        self.tile25.setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
Wie ihr seht ist mein konkretes Problem der Name der jeweiligen Labels (tile1, tile2, tile3, tile4 usw)
Ich denke man sollte doch recht simpel per Schleife darüber iterieren können, allerdings funktionieren Versuche wie etwa den Label namen durch eine Variable + i zu ersetzen nicht.

Was habe ich für Möglichkeiten?
Danke für eure Hilfe! :)

Re: Mit Schleife über Variablennamen iterieren

Verfasst: Samstag 5. März 2016, 18:53
von DasIch
Listen. Ganz tolle Sache.

Re: Mit Schleife über Variablennamen iterieren

Verfasst: Samstag 5. März 2016, 19:26
von pillmuncher
Was DasIch gesagt hat.

Re: Mit Schleife über Variablennamen iterieren

Verfasst: Samstag 5. März 2016, 19:27
von Shiva420
Alle beispiele zu Listen die ich finde beinhalten leider nicht mein direktes Problem. :(
Ich habe jetzt einfach mal folgendes (erfolglos) probiert.

Code: Alles auswählen

            #Reset GUITiles

            tiles = ["tile1", "tile2"]

            self.tiles[0].setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
            self.tiles[1].setPixmap(QtGui.QPixmap(_fromUtf8("tileNew.png")))
Könnte ich vllt. noch einen Tipp bekommen? :mrgreen:

Re: Mit Schleife über Variablennamen iterieren

Verfasst: Samstag 5. März 2016, 19:35
von Sirius3
@Shiva420: Zeichenketten werden nicht automagisch zu Attributen oder Variablen. Du mußt die konkreten Objekte in die Liste speichern:

Code: Alles auswählen

tiles = [self.tile1, self.tile2]
pixmap = QtGui.QPixmap("tileNew.png")
for tile in tiles:
    tile.setPixmap(pixmap)

Re: Mit Schleife über Variablennamen iterieren

Verfasst: Samstag 5. März 2016, 19:40
von Shiva420
Vielen Lieben Dank! :)

Re: Mit Schleife über Variablennamen iterieren

Verfasst: Samstag 5. März 2016, 19:47
von cofi
Ergaenzend zu Sirius3: Wenn du solchen Code benutzt:

Code: Alles auswählen

self.tile1 = create_tile()
self.tile2 = create_tile()
....
self.tiles = [self.tile1, self.tile2]
dann machst du etwas falsch und solltest soetwas benutzen:

Code: Alles auswählen

self.tiles = [create_tile() for _ in range(25)]