@Peter1977: Ein paar Anmerkungen zu dem Quelltext:
Mit den langen Kommentaren wird die empfohlene Zeilenlänge gesprengt. Inline-Kommentare, also solche am Ende von Code-Zeilen sollte man deshalb nur für sehr kurze Anmerkungen nutzen und ansonsten über den Code schreiben der Kommentiert werden soll. Und dort dann zur leichteren Lesbarkeit mehrere Zeilen schreiben wenn es zu lang wird.
Kommentare sollten dem Leser einen Zusatzwert zum Code liefern der damit kommentiert wird. Bei ``if len(indexes)>0:`` daneben zu schreiben ``# Geprüft ob indexes größer 0 ist`` trifft das nicht wirklich zu. Da wird einfach noch mal wiederholt was man im Code trivial ablesen kann.
Warum prüfst Du das überhaupt? Wenn die Länge 0 ist, dann wird die ``for``-Schleife auch nicht durchlaufen, dafür wäre aber `Eintraege` in jedem Fall definiert.
Vom `item` wird an *zwei* verschiedenen Stellen im Code der Text abgefragt und mit `str()` umgewandelt, der Programmfluss kommt aber garantiert an einer von beiden vorbei — man könnte das also an *einer* Stelle vorher machen.
Bedingungen wie ``if len(sequence) == 0:`` oder ``if len(sequence) != 0:`` schreibt man in Python in der Regel kürzer weil Containerobjekte in diesem Kontext als ”falsch” angesehen werden wenn sie leer sind, und als ”wahr” wenn mindestens ein Element darin enthalten ist. Also ``if not sequence:`` oder ``if sequence:``. Damit wären wir ungefähr bei so etwas:
Code: Alles auswählen
#
# Es wird jede 1. Spalte jeder selektierten Zeile in die Variable
# `indexes` geschrieben.
#
indexes = self.tbl_bestellungen.selectionModel().selectedRows(0)
entries = ''
for index in indexes:
text = str(self.tbl_bestellungen.itemFromIndex(index).text())
if not entries:
entries = text
else:
entries = entries + ',' + text
Hier ist jetzt noch das erstellen von `entries` total „unpythonisch” und auch ineffizient. Wenn man Zeichenketten in einer Schleife immer wieder mit ``+`` erweitert, muss man damit rechnen, dass die alten Daten jedes mal kopiert werden weil Zeichenketten in Python ja unveränderbar sind. Und da die Zeichenkette in jedem Durchlauf länger wird, müssen immer mehr Daten kopiert werden. Idiomatisch sammelt man die Einzelteile in einer Liste oder schreibt einen Generatorausdruck und setzt das Ergebnis dann mit der `join()`-Methode zusammen, wodurch man den gesamten Code bequem in vier Zeilen Code unterbringen kann:
Code: Alles auswählen
entries = ','.join(
str(self.tbl_bestellungen.itemFromIndex(index).text())
for index in self.tbl_bestellungen.selectionModel().selectedRows(0)
)