本文共 879 字,大约阅读时间需要 2 分钟。
在Jupyter Notebook或QtConsole下运行PyQt程序时,常常会遇到内核死亡的错误。经过仔细分析,问题的根源在于PyQt应用程序的主循环app.exec_()未能正确退出,导致内核被立即终止。以下是解决这个问题的详细步骤:
问题分析:
app.exec_()未能正确退出,可能会导致内核死亡。解决方案:
app.exec_()运行在独立的线程中,这样可以避免阻塞内核。exit(0)而不是sys.exit(),以避免终止内核。优化后的代码:
from PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *import sysimport threadingapp = QApplication(sys.argv)window = QWidget()window.show()def run_app(): app.exec_()thread = threading.Thread(target=run_app)thread.start()if 'jupyter' in sys.argv or '@ipython' in sys.argv: exit(0)else: sys.exit()
效果说明:
注意事项:
通过以上方法,可以在不影响Jupyter Notebook内核的情况下,顺利运行和退出PyQt程序,避免了常见的内核死亡错误。
转载地址:http://djsb.baihongyu.com/