PyQt 5 - Kernel dies bei jedem Zweiten Run
Verfasst: Mittwoch 2. April 2025, 07:44
Hallo probier gerade zum ersten mal eine GUI mit PyQt zu basteln, und hab eine Anfägerfrage.
Wenn ich mein Skript so aufbaue, wie es in in den Büchern die ich über Qt habe gezeigt wird, "stirbt" der Kernel in Spyder bei jedem zweiten Durchlauf.
Das hat dann die Form
Mit etwas googlen hab ich heraus gefunden, dass das wohl daran liegt das die QApplication Instanz nach Beendigung des Skrips noch weiter läuft, und man keine zweite öffnen kann.
Der gängige Workaround scheint der folgenden zu sein "app = QApplication.instance()" mit dem folgenden zu ersetzen.
Funktionieren tut das bei mir auch aber ist das eine saubere Lösung?
Wäre es nicht besser dafür zu sorgen das die beim Schließen der GUI auch beendet wird?
Und wenn ja wie macht man das?
Wenn ich mein Skript so aufbaue, wie es in in den Büchern die ich über Qt habe gezeigt wird, "stirbt" der Kernel in Spyder bei jedem zweiten Durchlauf.
Das hat dann die Form
Code: Alles auswählen
class GUI(QDialog):
[...]
if __name__=="__main__":
app = QApplication(sys.argv)
w = GUI()
w.show()
sys.exit(app.exec_())
Der gängige Workaround scheint der folgenden zu sein "app = QApplication.instance()" mit dem folgenden zu ersetzen.
Code: Alles auswählen
app = QApplication.instance()
if app is None:
app = QApplication(sys.argv)
Wäre es nicht besser dafür zu sorgen das die beim Schließen der GUI auch beendet wird?
Und wenn ja wie macht man das?