Ошибка при выходе из tkinter при использовании Pygame - PullRequest
0 голосов
/ 04 апреля 2019

Я пишу игру, используя pygame и tkinter, и когда я закрываюсь, используя крестик окна, он выдает ошибку (но все равно завершается успешно): _tkinter.TclError: не может вызвать команду «обновить»: приложение было уничтожено Я хотел бы остановить это сообщение об ошибке Код, который выдает ошибку: «root.update»

Я загрузил код на https://gist.github.com/spacejoey86/4be3c84a32195ede0f798d3527c12874#file-second-revision

1 Ответ

1 голос
/ 04 апреля 2019

Вы должны назначить функцию пересечению окна, которая установит переменную (т. Е. tk_open), и затем вы можете использовать ее для выполнения root.update() только тогда, когда окно еще существует.

Код на основе Tkinter: Catching Window Deletion на effbot.org

Вы можете использовать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...