nachdem ich mich vor ca. 2 Jahren hier angemeldet und schon mal gesucht habe - aber nicht fündig geworden bin - noch einmal ein Versuch

Herausforderung :
Programm in Python mit diversen Modulen
GUI in Tkinter
In der GUI werden diverse Widgets eingebaut die sowohl in der GUI als auch in diversen anderen Modulen verwendet werden.
In der GUI werden über wenige Widgets auch einige der Python-Funktionalitäten in Modulen gestartet, die natürlich weitere Unter-Module aufrufen.
In diversen Modulen müssen zwingend Fehlerausgaben in die GUI eingebaut werden, etc.
Es wurde ein Interface-Module mit den Widget-Funktionalitäten erzeugt die sowohl in der GUI, als auch in Python-Modulen verwendet werden müssen.
Im Interface werden die Widget-Funktionen in GUI aufgerufen.
Ergebnis natürlich (wegen des direkten Aufrufs der eingebundenen Module zur Laufzeit) ---> circular Import.
Ich möchte sauber die Anwendung von der GUI trennen über ein Schnittstellen-Modul wie man das auch in C/C++ machen würde.
Dort habe ich den Vorteil, dass ich die Funktionen nur deklarieren muss damit sie bekannt sind und sie werden nicht sofort inkludiert.
Das wird ja erst in der Link-/Locator-Phase gelöst.
Diese Interface-Funktionalitäten benötigen aber natürlich die Widgets als Objekte, wenn ich nicht auf Funktionen in der GUI zugreifen möchte um den Circular Import zu vermeiden.
Wenn ich sie aber nicht global machen möchte - was ja einer sauberen, gekapselten Programmierung widerspricht, muss ich sie als Übergabewerte dem Modul zur Verfügung stellen.
Hatte darüber nachgedacht alle Widgets in einer Liste zusammenzufassen, damit die Parameterübergabe nicht ausartet und sie an die Module zu übergeben.
Aber eigentlich widerspricht das meiner Vorstellung von einer sauberen Programmierschnittstelle.
Ich möchte dort im Modul lediglich eine abstrakte Funktion haben dieses oder jenes Widget zu enablen, zu disablen, Ausgaben in ein Fenster zu schreiben, Messageboxen aufzumachen, die Progressbar auf x% zu setzen, usw. ... unabhängig von den Widget-Objekten.
Wie würdet ihr das lösen?
HILFREICHE Antworten sind willkommen

LG
Ghostfighter