gui1.py:
import sys from PyQt5.QtWidgets import QApplication, QWidget app = QApplication(sys.argv) w = QWidget() w.resize(250,150) w.show() #sys.exit(app.exec_()) app.exec_()
IPhythonログ:
runfile('F:/work/ws_python/TestProj1/gui1/gui1.py', wdir='F:/work/ws_python/TestProj1/gui1')
runfile('F:/work/ws_python/TestProj1/gui1/gui1.py', wdir='F:/work/ws_python/TestProj1/gui1')
Kernel died, restarting
Kernel died, restarting
Kernel died, restarting
カーネルが2回目の実行で死ぬのはなぜですか?それを解決する方法は?
(最後の行として#sys.exit(app.exec_())を使用しても同じことを行います。)
ヒントをありがとう、このコードは問題を修正しました。
app = QtCore.QCoreApplication.instance()
if app is None:
app = QtWidgets.QApplication(sys.argv)
これは、カーネルが停止し、再起動エラーが発生した場合に適しています。
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.QtCore import QCoreApplication
#app = QApplication(sys.argv)
app = QCoreApplication.instance()
if app is None:
app = QApplication(sys.argv)
私の場合、上記の解決策は機能しましたが、メインウィンドウを閉じるために(ウィンドウ装飾からの)ウィンドウを閉じるボタンが使用されている場合に限ります。しかし、プログラムがGUIシグナルハンドラーから終了したとき、問題は依然として存在していました。クリックされているボタンに。何度もいじった後、この状況で終了するための十分に安全な方法は次のとおりであることを学びました。
def safeExit(self):
"""exit the application gently so Spyder IDE will not hang"""
self.ui.deleteLater()
self.ui.close()
self.ui.destroy()
... self.ui.Button2.clicked.connect(self.safeExit) ...