python - 如何停止由于输入错误而运行的代码而不导致 GUI 崩溃

标签 python pyqt4 exit

我有一个用 Python(2.7 和 3.2)开发的程序,它读取三个文件并根据这些文件生成一些代码。在代码中,我进行了多次输入文件检查以捕获用户的任何输入错误。如果程序捕获输入错误,我使用 os.sys.exit() 命令停止处理并发出错误消息。我主要使用 IDLE 进行该过程,效果很好。

现在我已经为使用 PYQT4 进行部署的程序开发了一个 GUI。用户使用 GUI 输入所有必要的输入文件和条件,然后 GUI 调用我使用必要的参数生成的早期代码。

但是,我发现如果用户在输入文件中出错,当早期的代码捕获这些错误并执行 os.sys.exit() 时,GUI 本身将完全关闭;这不好。

我在 GUI 中引入了对输入文件的相同检查,因此如果这些文件被捕获,它们将在 GUI 中处理,而不是由代码处理。但是,代码内部发生了某些处理检查,GUI 无法访问它们。

问题:有没有办法让被调用的代码停止运行,打印错误消息(例如到日志文件;我已经使用过),而不导致 GUI 完全退出?

谢谢

注意:此时代码太大,我无法将其作为类集成到 GUI 中。

最佳答案

我假设您不能或不愿意更改 CLI 程序,而是希望捕获由 sys.exit 引发的异常,而不是在 GUI 中。方法如下:

import os
try:
   os.sys.exit()
except SystemExit as err:
   print('Caught ya')

关于python - 如何停止由于输入错误而运行的代码而不导致 GUI 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652816/

相关文章:

python - 值错误 : Cannot query "": Must be "User" instance

python - 从记录中用 Pandas 索引几个 csv 文件?

python - PyQt4——添加文本编辑区动画示例

python - 如何退出正在运行线程的Python程序?

python - Gitlab CI Runner 无法在 Python 中导入 Google.Cloud

python - 如何使用 BS4 迭代 <td> 标签?

python - 在 QTabWidget 中更改选项卡大小

python - “模块”没有属性 'Treestyle'

ruby-on-rails - 在 Ruby on Rails IRB 中停止加载脚本执行的最佳方法

android - 如何在用户退出应用程序时保存 Android CheckBox 的状态?