- Использование Spyder в Python 3.5.2 | Anaconda 4.2.0 (64-разрядный) пакет Windows. кварты: 5.6.0
- Для первого запуска, окно графического интерфейса открывается, как и ожидалось
- Для 2-го пробега, ничего не открывается, и прием Kernel умер, перезапуск сообщения журнала.
gui1.py:Ядро Python умирает для второго запуска PyQt5 GUI
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_()) в качестве последней строки.)
Qt не может, как вы создаете более одного объекта 'QApplication' в том же процессе. Вы можете использовать 'QtCore.QCoreApplication.instance()', чтобы получить экземпляр приложения, если он уже был создан. [Пример кода] (https://github.com/ipython/ipython/blob/master/examples/IPython%20Kernel/gui/gui-qt.py). –
Не могли бы вы привести пример моего дела? Это не работает для меня. –
Я думаю, что важным битом является получение существующего экземпляра приложения, если оно существует: 'app = QtCore.QCoreApplication.instance()'. Затем, если этого не существует, создайте новое приложение: 'if app is None: app = QtGui.QApplication()'. –