-
Hallo,
erstmal Danke für die Antwort.
Leider habe ich mich immer noch nicht vernüftig ausgedrückt.
Ich meine wenn der Dilog beendet wird, soll eine Rückgabe erfolgen.
Gruß
Karl-Heinz@kahemenne
Also:if umb.exec(): ruckgabe = umb.etwas_aus_KatList_dialog() class KatList: def etwas_aus_KatList_dialog(self): return self.widget.value() # oder return self.antwort
-
Hallo,
erstmal Danke für die Antwort.
Leider habe ich mich immer noch nicht vernüftig ausgedrückt.
Ich meine wenn der Dilog beendet wird, soll eine Rückgabe erfolgen.
Gruß
Karl-Heinz@kahemenne said in Rückgabe von einem Unterfenster:
Ich meine wenn der Dilog beendet wird, soll eine Rückgabe erfolgen.
Das habe ich doch gezeigt?
umb.exec() # Ich benutze hier exec() statt show(), exec() wird beendet sobald Dialog geschlossen wird umb.WAS_AUCH_IMMER() # Hier kannst du jetzt auf das public Interface von KatLst zugreifen sys.exit(app.exec())
exec() gibt auch https://doc.qt.io/qt-6/qdialog.html#DialogCode-enum zurück falls es das ist was du brauchst:
auto result = umb.exec();
Man kann auch https://doc.qt.io/qt-6/qdialog.html#result benutzen.
-
Hallo,
Rückgabe heißt für mich, da ich im Dialog eine Auswahl getroffen habe, möchte ich diese Variable gerne zum aufrufenden zurückgeben.
Gruß
Karl-Heinz@kahemenne said in Rückgabe von einem Unterfenster:
Rückgabe heißt für mich, da ich im Dialog eine Auswahl getroffen habe, möchte ich diese Variable gerne zum aufrufenden zurückgeben.
QDialog::exec
/result()
can nur einint
zuruckgeben. Wenn Sie etwas anderes wollen, dann muessen Sie etwas benutzen wie ich es geshrieben habe :) -
Hallo JonB,
entweder ich habe es nicht verstanden oder es funktioniert so nicht.
umb.exec() ist doch erst erfüllt, wenn KatListDialog beendet wird.
return beendet aber den Dialog nicht.
Was ist wenn exec() erfüllt ist, kan man dann noch auf umb.etwas_aus_KatList_dialog() zugreifen?Ich bin total verwirrt.
Gruß
Karl-Heinz -
Hallo JonB,
entweder ich habe es nicht verstanden oder es funktioniert so nicht.
umb.exec() ist doch erst erfüllt, wenn KatListDialog beendet wird.
return beendet aber den Dialog nicht.
Was ist wenn exec() erfüllt ist, kan man dann noch auf umb.etwas_aus_KatList_dialog() zugreifen?Ich bin total verwirrt.
Gruß
Karl-Heinz@kahemenne said in Rückgabe von einem Unterfenster:
umb.exec() ist doch erst erfüllt, wenn KatListDialog beendet wird
Richtig, und danach willst du auf das Ergebnis zugreifen, oder?
Und genau das wurde doch hier schon gezeigt, verstehe das Problem nicht."return beendet aber den Dialog nicht" - welches return?
"Was ist wenn exec() erfüllt ist, kan man dann noch auf umb.etwas_aus_KatList_dialog() zugreifen?" - das wurde doch ebenfalls schon gezeigt:
umb.exec() # Ich benutze hier exec() statt show(), exec() wird beendet sobald Dialog geschlossen wird umb.WAS_AUCH_IMMER() # Hier kannst du jetzt auf das public Interface von KatLst zugreifen sys.exit(app.exec())
Oder von @JonB :
if umb.exec(): ruckgabe = umb.etwas_aus_KatList_dialog()
-
Hallo,
ich versuche meine Umgebung besser zu beschreiben:
ich habe eine KLasse mit meinem Main.Window.
Dort wird eine Weitere Klasse, abgeleitet von QDialog aufgerufen.
Von dieser Klasse möchte ich ein Ergebnis an die rufende Klasse zurückgeben.
Wenn ich die Klasse mit close() verlasse passiert garnichts.
Wenn ich die Klasse mit return verlasse passiert nichts.
D.h. ich komme garnicht den zweig rückgabe an.
Gruß
Karl-Heinz -
Hallo,
ich versuche meine Umgebung besser zu beschreiben:
ich habe eine KLasse mit meinem Main.Window.
Dort wird eine Weitere Klasse, abgeleitet von QDialog aufgerufen.
Von dieser Klasse möchte ich ein Ergebnis an die rufende Klasse zurückgeben.
Wenn ich die Klasse mit close() verlasse passiert garnichts.
Wenn ich die Klasse mit return verlasse passiert nichts.
D.h. ich komme garnicht den zweig rückgabe an.
Gruß
Karl-Heinz@kahemenne said in Rückgabe von einem Unterfenster:
Von dieser Klasse möchte ich ein Ergebnis an die rufende Klasse zurückgeben.
Dann mach das doch? Von alleine wird es nicht passieren. Ich habe doch schon gezeigt wie man etwas von einem Objekt bekommen kann:
umb.exec() umb.WAS_AUCH_IMMER() # Hier, an dieser Stelle, kannst du ja immer noch auf umb zugreifen sys.exit(app.exec())
"Wenn ich die Klasse mit return verlasse passiert nichts." - was genau soll denn passieren? Außerdem verlässt du nicht eine Classe mit return sondern Funktion/Methode. Und eine Funktion/Methode kann ein Ergebnis zurück geben an den Aufrufer:
def function(): return 1 result = function()
Genau das hat auch @JonB schon gezeigt.
-
Hallo jsulm,
ich habe ein Objekt (hier QDialog) erzeugt und mit umb.exec() aufgerufen.
So weit so gut.
Mein Verständnis sagt, ich komme nur an die Zeile hinter exec wenn ich das Object beende. Oder?
Wenn das ich Objekt umb beendet habe, kann man doch keine Funktion mehr in umb ansprechen. Oder?Gruß
Karl-Heinz -
Hallo jsulm,
ich habe ein Objekt (hier QDialog) erzeugt und mit umb.exec() aufgerufen.
So weit so gut.
Mein Verständnis sagt, ich komme nur an die Zeile hinter exec wenn ich das Object beende. Oder?
Wenn das ich Objekt umb beendet habe, kann man doch keine Funktion mehr in umb ansprechen. Oder?Gruß
Karl-Heinz@kahemenne said in Rückgabe von einem Unterfenster:
Wenn das ich Objekt umb beendet habe, kann man doch keine Funktion mehr in umb ansprechen. Oder?
Nur weil du den Dialog schließt heißt es nicht, dass das Objekt welches den Dialog erzeugt gelöscht ist. Das Objekt lebt so lange bis Du es löscht und/oder der scope verlassen wurde und es automatisch gelöscht wird.