问题描述
因此,当我注意到一些奇怪的行为时,我正在处理一个更大的项目并在 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 (将#修改为@)