我现在正在修补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
我没有看到代码有什么问题,它可以工作(忽略瓦片在正确的位置没有blit的事实),但没有回溯,关闭它的唯一方法是杀死python进程在任务管理器中。任何人都可以发现我的代码有问题吗?
答案 0 :(得分:13)
如果您是从IDLE运行它,那么您将缺少 pygame.quit()。
这是由IDLE python解释器引起的,它似乎以某种方式保留了引用。确保在退出应用程序或游戏时调用pygame.quit()。
答案 1 :(得分:12)
你从哪里退出外圈?
while True: # outer loop
for event in pygame.event.get(): # inner loop
if event.type == QUIT:
break # <- break inner loop
答案 2 :(得分: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()
答案 3 :(得分:3)
'如果event.type == QUIT'生成语法错误。应该是== pygame.QUIT 此外,该行的其余部分是不正确的,但我看不出如何。 有一个更清晰的变体here:
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
答案 4 :(得分:0)
我有一个类似的问题,知道为什么我不能关闭pygame窗口..并搜索..并遇到了这个..
我认为这解释了一切......也是好主意..
见:http://bytes.com/topic/python/answers/802028-pygame-window-not-closing-tut-not-helping
我认为问题在于你 从IDLE中运行它。它看起来 比如pyGame的事件循环和Tkinter的 事件循环相互干扰。 如果您运行脚本 命令行,它的工作原理。