Was fällt Dir auf, wenn Du Deine GUI-Klasse anschaust?
- Keine einzige Methode benutzt »self«, das heißt, sie haben nichts gemeinsam, warum also eine Klasse?
- Jede Methode ist trivial. Ich habe keinen Vorteil davon, dass ein einzelner Button in einer eigenen Method erzeugt wird.
- das Verarbeiten von GUI-Ergeignissen wird nicht in der GUI-Klasse gemacht, sondern in der Traffic-Klasse.
Du benutzt überall globale Variablen, wo sie nicht sein sollten. Zum Beispiel »Traffic.verbrauchSchreiben« tut nicht, was der Name verspricht, sondern greift auf die globale Variable »main« zu, um das Programm zu beenden!
An Deiner Strukturierung ist so viel falsch, dass es am Besten ist, Du fängst nochmal von vorne an. Als kleine Hilfe hier mal ein Gerüst, das Du mit Leben füllen kannst:
Code: Alles auswählen
import tkinter
class Traffic():
def __init__(self):
self.start_wert = 0
def load(self, filename):
""" Liest den start_wert aus der Datei, und gibt einen Status zurück. """
# to do ...
# restliche Methoden
class Gui():
def __init__(self):
""" erzeugt ein tkinter-Hauptfenster mit allen Komponenten """
self.traffic = Traffic()
self.tk = tkinter.Tk()
# to do ...
def mainloop(self):
self.tk.mainloop()
# hier kommen die Methoden, die auf Ereignisse reagieren
def main():
gui = Gui()
gui.mainloop()
if __name__ == '__main__':
main()
Du solltest nur etwas in die beiden Klassen schreiben müssen. Auf Modulebene ist das Programmgerüst fertig. Ich habe absichtlich eine Funktion »main« erstellt, damit Du nicht in Versuchung kommst, »gui« irgendwo in Deiner Traffic-Klasse zu benutzen.