Auch beim Versuch und Fehler mit GUI-Programmen wie PyQt und PyQtGraph Ich benutze oft Jupiter usw., weil es bequem ist. Es gibt einen der nervigsten Punkte.
Wenn ich ein PyQt-GUI-Programm mehrmals ausführe,
** Der Kernel wird definitiv sterben. ** ** **
Ich habe endlich eine Problemumgehung gefunden.
Dies → sys.exit (app.exec_ ())
Ich dachte, das lag daran, dass sys.exit seltsam endete, aber es war unschuldig. Das Vorhandensein oder Fehlen von sys.exit () am Ende war irrelevant (zumindest in jupyter). (Spyder ist unbestätigt)
app = 0 # Diese Zeile hinzufügen app = QtGui.QApplication(sys.argv)
Mit diesem allein, auch wenn Sie den gleichen Code mit jupyter viele Male ausführen, Der nervige Kernel-Neustart ist weg! Yay!
Referenz https://www.reddit.com/r/learnpython/comments/45h05k/solved_kernel_crashing_when_closing_gui_spyder/
01.09.2016 Nachtrag
Ich könnte es mit Mojaies Methode im Kommentar machen. Egal wie Sie darüber denken, diese Methode ist richtig.
app = QtGui.QApplication.instance()
if app is None:
app = QtGui.QApplication(())
Außerdem läuft PyQt4 lautlos und der Kernel stirbt, während Ich war schockiert, dass PySide die Erstellung mehrerer QApplication-Instanzen im Voraus verhindert und einen Laufzeitfehler zurückgegeben hat. Es ist der Unterschied zwischen PyQt4 und PySide. .. ..
Außerdem kann app = 0 nicht mit PySide verwendet werden, da dies einen Laufzeitfehler verursacht. app = 0 ist eine Magie für PyQt4 ...
Recommended Posts