gpt4 book ai didi

python - pygame.quit() 挂起,即使在 IDLE 之外

转载 作者:行者123 更新时间:2023-11-28 22:57:05 25 4
gpt4 key购买 nike

我在 Debian 上使用 Pygame 1.9.1 和 Python 2.7.3,

我正在尝试让一个小的测试程序运行,然后再进行更高级的操作;
在我告诉 Pygame 退出之前,一切似乎都运行良好。

我读到你需要 pygame.quit(),至少在 IDLE 中(以确保它干净地退出,)
所以我明白了 - 但它仍然卡住

相关代码如下所示:

def mainLoop():                                                                                                                 
running = True
clock = pygame.time.Clock()
while running:
gameMode()
render()
key = pygame.key.get_pressed()
for event in pygame.event.get():
if event.type == QUIT or key[K_ESCAPE]:
running = False
print 'finished'
return
clock.tick(30)

if __name__=='__main__':
mainLoop()
print 'exiting after main loop'
pygame.quit()

我运行它并打印出“完成”和“在主循环后退出”,
但即便如此,窗口仍然存在。

更奇怪的是,
我已将它缩减为一个仍然挂起的最小程序(就是这样,完整):

import pygame
pygame.init()
pygame.quit()

有人可以阐明这里发生的事情吗?

最佳答案

pygame.init 将尝试初始化所有 PyGame 模块,无论是否需要。 pygame.quit 将退出所有事件模块,并在解释器退出时自动调用(这就是为什么在删除对 pygame.quit 的显式调用后问题仍然存在的原因) .

pygame.mixer.quit 方法目前在 Debian Wheezy 上挂起(截至 2013 年 6 月 12 日)。如果您不使用混音器,您只需将对 pygame.init 的调用替换为对您正在使用的模块的 init 方法的调用(模块列表require init 调用可以在 PyGame documentation index 中的“I”下找到)。在我的例子中,初始化 display 模块就足够了。因此,您的示例变为:

import pygame
pygame.display.init()
pygame.quit()

关于python - pygame.quit() 挂起,即使在 IDLE 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14667327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com