首页 > 解决方案 > 除非重新启动内核,否则尝试重新运行脚本时出现 bgerror 和冻结

问题描述

我正在将 tkinter 与 spyder 一起使用。当我第一次运行该程序时,它运行良好。但是如果我重新运行它,我会在运行时遇到后台错误,

bgerror failed to handle background error.
    Original error: invalid command name "2852944621888foo"
    Error in bgerror: can't invoke "tk" command: application has been destroyed
bgerror failed to handle background error.
    Original error: invalid command name "2852944383936foo2"
    Error in bgerror: can't invoke "tk" command: application has been destroyed
invalid command name "2852928400064foo2"
    while executing
"2852928400064foo2"
    ("after" script)

while executing部分仅在我尝试多次重新运行时才会显示,while executing每次都会添加另一个。导致错误的两个函数 foo 和 foo2 都使用递归root.after()(from root = tk.Tk())。GUI 仍然可以运行,但第一次运行后非常慢,冻结了很多。我按顺序使用root.quit()root.destroy()结束应用程序。如果我重新启动内核,应用程序将再次正常运行。有时在任务管理器中运行的额外后台 python 进程具有高功耗,如果我结束该任务,它会重新启动内核。我猜有些东西在后台运行。为什么它不能正确关闭并重新启动?

编辑:我发现在此之后运行不同的脚本时,它会在某种程度上冻结,并且仅在运行第一个之后(Reloaded modules:显示第一个模块,在第一个之后第一次运行第二个时)。

标签: pythontkinter

解决方案


推荐阅读