pygame.quit() 可靠吗?

Is pygame.quit() reliable?

我最近做了一个小游戏,然后用pyinstaller把它变成了一个应用程序。当运行时,有两种关闭方式。它是全屏的,因此不包括单击红色 x 按钮,但基本上我有这个

if keys[pygame.K_ESCAPE]:
    pygame.quit()

还有这个

if exit_button.colliderect(cursor_rect) and click==1:
    pygame.quit()

单击退出按钮后,游戏正常关闭。光标紧随其后短暂显示小加载符号。但是,当按下转义键时,window 关闭但会弹出一条消息,提示“无法执行脚本”。我在 windows 10,游戏是在 pycharm 上用 pygame 制作的,exe 是用 pyinstaller --onefile -w game.py.

制作的

也许这是代码中的错误,但它在 IDE 中运行得非常好,我没有做任何不同的事情。我还可以确认它没有丢失图像或媒体。谢谢。

pygame.quit() 不会退出您的程序,它会取消初始化所有 pygame 模块。当您希望程序继续但没有 pygame 时使用它。如果您在调用 pygame.quit().

后使用某些 pygame 函数,您的程序将崩溃

如果你想终止你的程序,只需让程序自然结束或调用quit()。很多人喜欢在调用quit()之前先调用pygame.quit(),其实这是没有必要的。

只是想补充一点。

正如您在大多数 pygame projects (source) 中看到的那样,我们同时使用 pygame.quit() sys.exit().

假设您打算同时关闭 pygame 程序 和 运行ning 来自的 Python 脚本,您我将使用类似下面的代码。

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

首先调用 pygame.quit() 以停止在您 运行 pygame.init() 时激活的所有 pygame 模块,然后调用 sys.exit() 停止 python脚本。

我创建的几个项目都是这样做的,而且我在退出程序时从未遇到过任何错误,无论是手动还是通过代码。