Problem mit QtfindItem in Schleife
Verfasst: Mittwoch 16. März 2016, 14:47
Hallo, bin neu im Forum, daher erstmal Gruß an Alle!.
Bei einem Problem mit der findItem Funktion komme ich nicht weiter. Zumindest sehe ich nicht mein Problem ( Knoten im Kopf ?)
Ziel ist es ein Treeviewmodel abzufragen um gefundene Items dann zu markieren. Prinzipiell läuft das Problemlos.
Nur wenn ich den Code innerhalb der Kommentarzeilen ausführe, findet die Funktion nur den ersten Treffer.
Der nichtkommentierte Teil macht prinzipiell dasselbe, nur dass er wie gewünscht auch alle Treffer findet.
die Print(Material) Funktion liefert auch korrekt das entsprechende Suchkriterium, nur findItem ... findet nur beim erstmaligen Aufruf Treffer.
Bisher habe ich kein Problem in meiner Logik erkannt... Bitte um Erleuchtung. Danke schonmal im voraus
Bei einem Problem mit der findItem Funktion komme ich nicht weiter. Zumindest sehe ich nicht mein Problem ( Knoten im Kopf ?)
Ziel ist es ein Treeviewmodel abzufragen um gefundene Items dann zu markieren. Prinzipiell läuft das Problemlos.
Nur wenn ich den Code innerhalb der Kommentarzeilen ausführe, findet die Funktion nur den ersten Treffer.
Der nichtkommentierte Teil macht prinzipiell dasselbe, nur dass er wie gewünscht auch alle Treffer findet.
die Print(Material) Funktion liefert auch korrekt das entsprechende Suchkriterium, nur findItem ... findet nur beim erstmaligen Aufruf Treffer.
Code: Alles auswählen
def __Vorauswahl():
''' ---------------- Das hier findet nur beim ersten Lauf der for Schleife alle Treffer :
if len(ini['MaterialVorauswahl']) > 1 :
Materialvorauswahl = ini['MaterialVorauswahl'].split(",") # geliefert wird ein String mit Komma getrennten Wörtern
else :
Materialvorauswahl = ini['MaterialVorauswahl']
for Material in Materialvorauswahl:
print(Material) # Kontrolle zeigt dass Material richtig gewechselt wird in der for Schleife
for item in self.model5.findItems(Material, Qt.MatchContains ): # hier wird das Material NICHT richtig eingesetzt
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
print ( item.data(QtCore.Qt.DisplayRole), "Materialvorauswahlarray : ", Materialvorauswahl)
'' ------------------ Das hier macht doch prinzipiell nichts anderes, aber es findet alle Treffer :
if "Platten" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Platten", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
if "Kanten" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Kanten", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
if "Belag" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Belag", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
if "Oberfläche" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Oberfläche", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
if "Massiv" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Massiv", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)