微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python - 在使用 Tkinter

如何解决Python - 在使用 Tkinter

因此,当我注意到一些奇怪的行为时,我正在处理一个更大的项目并在 Mac 上进行测试。我使用的是 Python 3.9.1 和 macOS 11.0.1 – 该错误不会在 Windows 7 上发生,我还没有测试过其他版本的 macOS 或 Windows。

我将 Tkinter 用于初始设置窗口,然后切换到 Pygame,在此期间,我对所有 Tkinter 变量进行了一些清理——理论上它们无关紧要,因为之后我不会将 Tkinter 用于任何事情那。 Pygame 窗口打开后,一切正常,但是如果我单击另一个窗口使 Pygame 散焦,然后再次聚焦在 Pygame 窗口上,它会崩溃并显示以下输出

pygame 2.0.0 (SDL 2.0.12,python 3.9.1)
Hello from the pygame community. https://www.pygame.org/contribute.html
called Tcl_FindHashEntry on deleted table
zsh: abort      python3 test.py

持续重现此问题的最低要求是

import pygame
import tkinter as tk
from time import sleep

root = tk.Tk()

try:
    root.mainloop()
except tk.TclError:
    pass

del root

pygame.init()
screen = pygame.display.set_mode((100,100))

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            print('User quit.')
            exit()
    pygame.display.flip()
    sleep(0.025)

如果我删除 del root 则它不会崩溃,所以这对我的项目来说实际上不是一个大问题 - 我不需要需要删除对 root 的引用。但是有没有更好的解决方案可以防止出现问题,并且在我完成后仍然允许我清理 Tkinter 引用?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。