【问题标题】:Kivy stopped without returning error messageKivy 停止但未返回错误信息
【发布时间】:2021-03-17 17:41:20
【问题描述】:

您好,我有一个非常复杂的 kivy 应用程序。我正在做一些事情,我启动了应用程序,但是当我试图保存数据时,我的应用程序突然停止,没有任何错误消息:Process finished with exit code 1

经过反思,我发现我删除了我正在迭代的dict上的一个键!

所以我应该看到 RuntimeError: dictionary changed size during iteration 但什么也没出现!为什么以及如何防止这种情况发生?

(调试可能需要很长时间,我无法想象没有错误消息!)。

以下是引发所需错误的代码示例:

d = {"a":"e","b":"c"}
for k in d:
    del d[k]

【问题讨论】:

    标签: python error-handling crash kivy


    【解决方案1】:

    由于你没有提供任何代码,我无法给你具体的答案,但是:

    这个错误在使用诸如

    之类的方法时经常出现

    pop()

    发生这种情况是因为您删除了一个项目,而您仍在遍历您的字典。如果python现在试图访问这个项目,它不能并引发你提到的错误。

    这很容易解决,方法是遍历字典的副本并同时更改原始字典的值。

    这可以这样完成:

    for i in original_dict.copy():
    

    编辑 1:要强制 python 显示错误,您可以这样做:

    try:
    
        # your code
    
    except Exception as e:
    
        raise e
    

    【讨论】:

    • @NoameKhan72, If python now tries to access this very item, it can't and raises the error you mentioned., 嗯,其实我可以在另一个小程序上提出这个错误,我在上面添加了一个例子,这就是为什么当我不能提出它时我很担心我的 kivy 程序。
    • 我不确定,我现在是否完全理解您的问题。我能够使用您的示例重现该错误。我还能够使用建议的复制方法修复它。这不是你想要的吗?请澄清。
    • 我不担心这个错误,我担心它不是在我复杂的 kivy 应用程序中引发的,而是在简单示例中引发的。
    • Edit 解决了您的问题吗?我从来没有听说过 Kivy 没有引发错误,也许你的安装出了问题?你有所有必要的文件吗?
    • 不,它在我的 PyCharm IDE 上,我什至没有部署!我想我拥有一切。
    【解决方案2】:

    查看这个答案After I start the program Kivy crashes without any error message

    基本上,如果您的 kivy 应用不再显示信息或错误消息,只需尝试在以下位置删除您的配置文件:

    ~/.kivy/config.ini
    

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多