python - PyQt5 失败并显示神秘消息

标签 python qt5 pyqt5

我创建了带有模型和 View 的小应用程序。自从开始 PyQt5 每次出现问题时都会崩溃
进程已完成,退出代码 -1073740791 (0xC0000409)
其极其神秘。我不知道哪个组件出现故障。一段时间以来,我能够通过调试解决这个问题,但有些东西失败了,我不知道是什么。

如何从PyQt5获取调用堆栈?如何获取更详细的崩溃消息?

Python 3.6.1 PyQt5 5.8.1 PyCharm

最佳答案

已通过将您的 NVIDIA 驱动程序回滚到以前的版本来修复此问题。我使用的是 378.49 版本,然后切换回 376.33,现在一切正常。无论您的显卡是什么,您都可以尝试一下。

GTX 965M 示例:

Go to Device Manager -> Display adapters -> NVIDIA GeForce GTX 965M (Right Click) -> Properties -> Driver tab -> Roll Back Driver.

注意:

Nvidia 驱动程序有新版本 (378.66)。 与 guru3d 的驱动程序相比 - 您拥有来自原始供应商的驱动程序并具有最新的修复程序。 :)

我已在我的笔记本电脑上测试了此版本(使用GeForce GTX 960M)。

它在环境控制台上启动、工作并以退出代码 0 结束。 现在好像没问题了。

以下是 Nvidia 自从其驱动程序的 (378.49) 版本出现问题以来所做的更改:

(摘自 http://us.download.nvidia.com/Windows/378.66/378.66-win10-win8-win7-notebook-release-notes.pdf,第 15 页)

更新:

我也处理过同样的问题,答案是双重的:

  1. 崩溃的原因可能有很多。这可能是一个编程错误,调用了一个不存在的函数,传递了一个小部件而不是一个布局,等等。但是由于您没有获得有用的输出,您不知道在哪里寻找罪魁祸首。
  2. PyQT 引发并捕获异常,但不会传递它们。相反,它只是以状态 1 退出,表明捕获了异常。

要捕获异常,您需要覆盖 sys 异常处理程序:

# Back up the reference to the exceptionhook
sys._excepthook = sys.excepthook

def my_exception_hook(exctype, value, traceback):
    # Print the error and traceback
    print(exctype, value, traceback)
    # Call the normal Exception hook after
    sys._excepthook(exctype, value, traceback)
    sys.exit(1)

# Set the exception hook to our wrapping function
sys.excepthook = my_exception_hook

然后在执行代码中,将其包装在 try/catch 中。

try:
    sys.exit(app.exec_())
except:
    print("Exiting")

关于python - PyQt5 失败并显示神秘消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43039048/

相关文章:

python - PyMQI for windows 构建和安装

数据帧中按组键的 Python 值差异

c++ - Qt: c++: 如何使用 QStringList 填充 QComboBox

c++ - QT 对话框的样式不正确

c++ - Qt 样式表 - 未应用背景属性

python - 将大图像保存在另一个线程中

python - 为另一个类中的小部件设置背景图像

python - 为什么 os.path.exists ("C:\\windows\\system32\\inetsrv\\metaback") 即使存在也会返回 False?

python - 检测列表是否仅包含空数组的最简单方法是什么?

python - PyQt5 QThread 不工作,gui 仍然卡住