deets hat geschrieben:Mein Rat: wegschmeissen. Neu machen.
Hm... das klingt wenig motivierend, daher will ich es mal umformulieren: Priorität auf das *Lernen* legen. Bisher unzulänglich verstandene Dinge versuchen sich zu erarbeiten und *konsequent* umzusetzen. Das Thema Exceptions hatte ich - iirc sogar in diesem Thread (!) - Dir doch mal lang und breit versucht nahe zu bringen. Und nun taucht da schon wieder ein leeres `except` auf...
Dafür würde ich den Fokus weg von (meiner Meinung nach) Nebenkriegsschauplätzen a la GUI und Kontrolle, dass nur eine Instanz davon laufen darf, auf Dinge wie den grundsätzlichen Aufbau, Ablauf und die verwendeten Datenstrukturen und Backends legen.
Sofern ich das noch überblicke geht es doch nach wie vor um das Thema Kataloge im weitesten Sinne. Dafür musst Du versuchen endlich mal ein "neutrales" Format zu schaffen, welches Du auf eine sinnvolle Art und Weise (relationale DB z.B., ggf. auch gerne JSON) abzulegen. Der bisherige Ansatz mit CSV-Dateien, die zig verschiedene Ausnahmen beinhalten und ständig von einem in das andere Format konvertiert werden, ist imho Kern des ganzen Übels. Da fehlt es dann primär auch an einer sinnvollen *internen* Darstellung von Daten. Geeignete Klassen würden da schon einiges helfen.
Hat man da eine gute Grundlage geschaffen, sollte man vieles auch einfach mit *einfachen* CLI-Tools erledigen können. Von mir aus kann man dann auch einfache Tk-Oberflächen schaffen. Ich würde aber nicht versuchen, einen komplexe Workflows in ein Tk-GUI pressen zu wollen. Damit überhebt man sich vermutlich, zumal, wenn einem in Sachen OOP zu viele Grundlagen fehlen.
Imho hangelst Du Dich momentan von einem Problem zum nächsten und weisst nicht genau, wo Du eigentlich hin willst. Vielleicht reicht es Dir, dieses konkrete Problem *einmal* zu lösen und das ganze - inkl. Python - danach nie wieder anzufassen. Wenn Du jedoch grundsätzlich Python lernen willst *und* zudem Programme so schreiben willst, dass diese wartbar und später auch erweiterbar beliben, dann musst Du einfach die Grundlagen *verinnerlichen*. Dazu gehören einfach Dinge wie das Verständnis über die grundlegenden Datenstrukturen, über Funktionen, Klassen, wie man mit Exceptions umgeht usw. Momentan bist Du zu sehr auf das Lösen eines speziellen Problems "versessen", dass Du bereits erlerntes vergisst, weil Du schnell dieses eine Problem lösen willst und dann irgend wie "schluderst" oder sonst wie zum Ziel "rennst", ohne bekannte Dinge dauerhaft zu berücksichtigen und das Verständnis für diese zu festigen.
Natürlich kommt man ohne Motivation nicht zum Ziel. Es ist auch nicht schlimm, wenn man Code komplett weg wirft und zurück zur Konzeption geht, weil man erkennt, dass das so nicht hinhaut. Oder aber man erlernt während der Entwicklung neue Fertigkeiten, so dass einem selber der alte Code und dessen Struktur nicht mehr überzeugt. Insofern mag es ja ok sein, dass Du so weit gekommen bist; aber imho wäre nun der richtige Schritt, alles noch mal neu und von Anfang an *konsequent* und *strukturiert* neu aufzubauen.
Du wirst hier immer Hilfe erhalten, wenn Du zeigst, dass Du lernwillig bist - im Moment gibst Du uns implizit das Feedback, dass Du Tipps nicht aufgreifst und ungeachtet der mahnenden Beiträge auf ein Ziel zu sprintest. Damit wird die konstruktive Beteiligung auf Deine Threads eher sinken... zumindest bei den Regulars hier.
Nicht falsch verstehen: Ich will Dich nicht niedermachen, sondern Dich ermutigen, Deine Methodik beim Lernen und Umsetzen umzustellen