Pygame程序在退出时挂起
我现在正在玩pygame,发现我用它做的小程序在我尝试关闭时总是卡住。
比如说,看看下面这段代码:
from pygame.locals import *
pygame.init()
# YEEAAH!
tile_file = "blue_tile.bmp"
SCREEN_SIZE = (640, 480)
SCREEN_DEPTH = 32
if __name__ == "__main__":
screen = pygame.display.set_mode(SCREEN_SIZE, 0, SCREEN_DEPTH)
while True:
for event in pygame.event.get():
if event.type == QUIT:
break
tile = pygame.image.load(tile_file).convert()
colorkey = tile.get_at((0,0))
tile.set_colorkey(colorkey, RLEACCEL)
y = SCREEN_SIZE[1] / 2
x = SCREEN_SIZE[0] / 2
for _ in xrange(50):
screen.blit(tile, (x,y))
x -= 7
y -= 14
我觉得代码没什么问题,它能正常运行(虽然瓷砖没有显示在正确的位置这点可以忽略),但是没有任何错误提示,唯一能关闭它的方法就是在任务管理器里结束python进程。有没有人能发现我代码中的问题?
5 个回答
4
我也遇到过同样的问题,不过我通过以下方法解决了它:
try:
while True:
for event in pygame.event.get():
if event.type==QUIT or pygame.key.get_pressed()[K_ESCAPE]:
pygame.quit()
break
finally:
pygame.quit()
12
你在哪里结束外层循环?
while True: # outer loop
for event in pygame.event.get(): # inner loop
if event.type == QUIT:
break # <- break inner loop
13
如果你是在IDLE里运行程序,那你可能忘了加pygame.quit()这行代码。
这是因为IDLE这个Python解释器似乎会保留一些引用。确保在退出你的应用程序或游戏时调用pygame.quit()。
可以参考这个链接:在IDLE中,为什么Pygame窗口不能正确关闭?
还有这个链接:Pygame文档 - pygame.quit()