python - 除非重新启动内核,否则尝试重新运行脚本时出现 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:
显示第一个模块,在第一个之后第一次运行第二个时)。
解决方案
推荐阅读
- javascript - click 不能在反应中的可折叠引导表上工作
- java - 如果会话超时,SpringBoot 重定向到登录
- php - PHP is_float() 验证
- django - PyMongo + Django:在设置中构造的 MongoClient 不返回数据
- javascript - 如何从 JavaScript 文件中导入变量并在 TypeScript 中使用它?
- 3d - 了解纯文本中的波前 .obj 和 .mtl 文件格式
- mysql - MySQL:在同一张表中使用不同标准的当前/未来行值进行计算?
- azure - 如何组合表达式和预定义变量以将我的构建存储库名称作为大写字符串?
- python - 如何从不同的文件访问变量
- python - pandas groupby.agg() 采用分类变量的模式,其中 NaN 是组的唯一变量