Hilfe, ich komme nicht weiter.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
anonym12

Ich habe ein kleines Problem beim programmieren und komme nicht weiter. Habe ich bis jetzt etwas falsch gemacht? Problem nummer 1: Unten bei StartFenster() -> reload() (bin noch nicht ganz fertig, schaffe irgendwie nicht weiter, bin Anfänger :D )


Vielen Dank für eure Hilfe!
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@CHGamingFreund: und was ist das Problem? Ein bißchen Fehlerbeschreibung (was passiert, was erwarte ich, wie sieht die Fehlermeldung aus, etc.) wäre schon hilfreich.

Zum Code: Sternchenimporte vermeiden, weil man nicht kontrollieren kann, was da alles in den eigenen Namensraum geladen wird. Keine globalen Variablen, und vor allem nicht, in __init__ einer Klasse irgendwelche globalen Listen führen. Das wird dort gemacht, wo die Instanzen erzeugt werden und zwar in lokalen Listen. Variablen und Funktionen schreibt man komplett klein. `del` ist eigentlich nie nötig. Vor allem nicht, wenn gleich in der nächsten Zeile die selbe Variable wieder angelegt wird. Keine Funktionen schachteln. Was Du brauchst, ist eine Klasse für Deine GUI. NeuenKontakt ist viel zu lang. Es darf nur ein Exemplar von `Tk` geben und nur eine mainloop. Weitere Fenster macht man mit TopLevel. Wenn man anfängt Variablennamen durchzunummerieren, will man eigentlich Listen und Schleifen verwenden.

Dass etwas an der Logik nicht stimmt, sieht man daran, dass in `NeuenKontaktSpeichern` eine Instanz von `Kontakt` erzeugt, aber nicht benutzt wird. Jeder normale Programmierer würde die Zeile einfach löschen, weil sie nutzlos scheint; hat aber Seiteneffekte, die versteckt sind und damit gefährlich.

Das selbe gilt für `BearbeitenKontakt` und `AnsehenKontakt`, wo vieles Doppelt und Dreifach zu `NeuenKontakt`, was man durch weitere Funktionen einfach wiederverwenden könnte.

`for i in range(...)` ist ein sogenanntes Anti-Pattern, weil man direkt über die Einträge der Liste iterieren sollte. Buttons, VornameLabels und NachnameLabels enthalten nur None-Einträge, was wenig sinnvoll ist.
anonym12

Danke für deine Hilfe! Aber was ist "Toplevel" eigentlich?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Toplevel ist eine Klasse für Fenster.
Antworten