我正在使用pygame和tkinter编写游戏,当我使用窗口的十字架退出时,会引发错误(但仍然成功退出): _tkinter.TclError:无法调用“更新”命令:应用程序已被破坏 我想停止此错误消息 引发错误的代码是“ root.update”
我将代码上传到https://gist.github.com/spacejoey86/4be3c84a32195ede0f798d3527c12874#file-second-revision
答案 0 :(得分:1)
您必须将函数分配给窗口的十字架,该十字架将设置变量(即tk_open
),然后才可以在窗口仍然存在时使用它来执行root.update()
。
基于effbot.org上Tkinter: Catching Window Deletion的代码
您可以使用root.protocol()
或root.bind()
-在effbot.org上了解更多信息
import tkinter as tk
def _delete_window():
global tk_open
print("delete_window")
tk_open = False
root.destroy()
def _destroy(event):
global tk_open
print("destroy")
tk_open = False
root = tk.Tk()
root.protocol("WM_DELETE_WINDOW", _delete_window)
#root.bind("<Destroy>", _destroy)
tk_open = True
while tk_open:
root.update()
也许在您的代码中,您只需要设置running == False
即可,而不必使用tk_open
。