使用Pygame时tkinter退出时出错

时间:2019-04-04 17:13:42

标签: python tkinter pygame

我正在使用pygame和tkinter编写游戏,当我使用窗口的十字架退出时,会引发错误(但仍然成功退出): _tkinter.TclError:无法调用“更新”命令:应用程序已被破坏 我想停止此错误消息 引发错误的代码是“ root.update”

我将代码上传到https://gist.github.com/spacejoey86/4be3c84a32195ede0f798d3527c12874#file-second-revision

1 个答案:

答案 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