@Ernie1412: Erstmal ein bisschen Englisch: Es heisst „website“ und nicht „webside“. Einzelne Seiten einer Website heissen „pages“ und nicht „sides“. Ich vermute da sind Fehler in der Namensgebung.
Der Wert der ersten Definition von `speichersatz` in `webside_speichern()` wird nirgends verwendet.
`r` ist ein ungewöhnlicher Name für einen Laufindex. Die erste Wahl ist da `i`.
Bei f"{webpage}" und f"{vertikal[zeile]}" sind die f-Zeichenkettenliterale sinnlos weil das schon Zeichenketten sind und da genau der gleiche Wert wieder bei raus kommt, denn man da rein gesteckt hat.
Man sollte Namen nicht zu weit von der Stelle entfernt definieren wo sie verwendet werden. Wenn man `speicher` und `speichersatz` in `werte_eingabe()` dahin verschiebt wo sie letztlich gebraucht werden, dann sieht das Ende der Methode so aus:
Code: Alles auswählen
speicher = {}
speicher[webpage] = spalte_0
speichersatz = {}
speichersatz = speicher[webpage]
return speichersatz
Und hier sieht man das die erste Definition von `speichersatz` gar nicht gebraucht wird. Und das man `speicher` auch gleich als Literal hinschreiben kann, statt erst leer zu erstellen und dann einen Wert zu setzen:
Code: Alles auswählen
speicher = {webpage: spalte_0}
speichersatz = speicher[webpage]
return speichersatz
Jetzt ist das aber total unsinnig erst ein Wörterbuch zu erstellen mit einem Schlüssel/Wert-Paar und dann diesen einen Wert da wieder heraus zu holen. Das ist ja letztlich einfach nur das hier:
Beim Code zum füllen von `spalte_0` fällt eine Asymmetrie auf: in der inneren Schleife wird `enumerate()` verwendet, in der äusseren nicht. Das sollte dort auch verwendet werden.
Die Zuweisung von `spalte_1bis8` als Wert in `spalte_0` steht an der falschen Stelle. Dort wird das immer und immer wieder gemacht, obwohl es immer das gleiche `spalte_1bis8`-Wörterbuch ist.
Zwischenstand (ungetestet):
Code: Alles auswählen
def werte_eingabe(self, webpage, horizontal, vertikal):
spalte_0 = {}
for zeile, vertical_header in enumerate(vertikal):
if self.tblWdg_WebSides.item(zeile, 1) is not None:
spalte_1bis8 = {}
for spalte, horizontal_header in enumerate(horizontal):
item = self.tblWdg_WebSides.item(zeile, spalte)
if item is not None:
spalte_1bis8[horizontal_header] = item.text()
if spalte_1bis8:
spalte_0[vertical_header] = spalte_1bis8
else:
spalte_0[vertical_header] = self.tblWdg_WebSides.item(
zeile, 0
).text()
return {webpage: spalte_0}