我有一个相当复杂的PyQt的应用程序(QT5,在Spyder的运行),在此,我到底做PyQt的app.exec()似乎是无阻塞
def main():
from PyQt5 import QtWidgets
if not QtWidgets.QApplication.instance():
app = QtWidgets.QApplication(sys.argv)
else:
app = QtWidgets.QApplication.instance()
main_window = MainWindow()
main_window.show()
status = app.exec_()
print status
sys.exit(0)
if __name__ == "__main__":
main()
(的的if-else检查因为this(第二个答案)。)当我运行此代码时,我的应用程序显示,并且状态代码-1
同时打印(由于在spyder/utils/ipython/start_kernel.py
中发生了错误)。我的问题是,为什么打印出这个错误,因为我认为app.exec_()是一个阻塞调用,并且在应用程序以某种方式退出之前不会返回状态。这是由于Spyder运行它自己的QApplication
?
如果您在运行应用程序之前运行'%gui qt5',会发生什么? –
嗨,卡洛斯,我跟着你的意见,关于我以前的问题,并将Ipython shell的设置更改为自动。即使我手动运行'%gui qt5',错误仍然存在(这是着名的'KeyError',因为'__file__'不在'locals()'中) – Dschoni
@CarlosCordoba是否已经有一个公开的问题,关于底层错误?或者这更像是一个非问题? – Dschoni