【发布时间】:2017-10-11 15:20:39
【问题描述】:
我有一个相当复杂的 PyQt 应用程序(Qt5,在 Spyder 中运行),最后我做了
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()
(由于this(第二个答案),需要进行if-else 检查。)当我运行此代码时,我的应用程序会显示,并且状态代码-1 会同时打印 strong>(由于spyder/utils/ipython/start_kernel.py 中出现错误)。我的问题是,为什么会打印这个错误,因为我认为 app.exec_() 是一个阻塞调用,并且在应用程序以某种方式退出之前不会返回状态。这是因为 Spyder 运行了自己的QApplication吗?
【问题讨论】:
-
如果在运行应用程序之前运行
%gui qt5会发生什么? -
嗨 Carlos,我听从了你关于我之前遇到的问题的建议,并将 Ipython shell 的设置更改为自动。即使我手动运行
%gui qt5,错误仍然存在(它是著名的KeyError,因为__file__不在locals()中) -
@CarlosCordoba 是否已经存在关于潜在错误的未解决问题?或者这更像是一个非问题?