ich versuche von einem Modul ('test.py') das QLCDNumber-Widget in der GUI(widget.py) zu "verändern", also mit display(x) den Wert zu ändern. Dies klappt allerdings nicht.
Egal was ich bis jetzt versucht habe bekomme ich immer folgenden Fehler:
widget.widget.lcdSPEED.display(33)
AttributeError: module 'widget' has no attribute 'widget'. Did you mean: 'Widget'?
Wie kann ich vom Modul "test.py" auf das QLCDNumber vom Widget in "widget.py" zugreifen und den Wert ändern?
Mit Modulen organisiert man nur die Definition von Klassen und Funktionen. Den konkreten Instanzen ist es egal, aus welchem Modul der Code dazu ursprünglich mal herkam.
Wenn Du also auf eine Instanz in einer Methode zugreifen willst, mußt Du sie als Argument übergeben.
Nein, weil dazu der Code fehlt. Der Hinweis bezog sich nur auf ein fundamentales Missverständnis, wie Klassen Funktionieren. Die sind blaupausen. Wenn du die Tür deines Autos öffnen willst, musst du schon dein Auto selbst vor dir haben. Nicht den Plan, nach dem es und alle seine Freunde gebaut wurden. Nur weiß keiner, wo du dein Auto abgestellt hast - weil, kein Code.
Das geht so alles nicht. Du darfst keine GUI-Objekte außerhalb des main Threads erzeugen, und anfassen. Für zyklische Aufgaben benutzt man in Qt (und allen GUIs) Timer. Schmeiß alles aus rdata raus was GUI ist, und Bau da eine Klasse, welche die connection aufbaut und auf Nachfrage die Werte liefert. Und die instantiierst du aus widget.py und fragst im Timer(!) die Werte ab.
erstmal danke für die Antwort. Ja ich verstehe den "Aufbau" ansich. Das habe ich anfangs auch so probiert, nur ist mein Problem wenn ich mir eine Klasse für Connection und das liefern der Daten baue und dann im main die Funktion oder Klasse aufrufe bleibt das Window schwarz, klar weil die Funktion oder Klasse die Werte ausgibt. Deshalb habe ich das so probiert...