几秒后Pygame窗口没有响应

Fre*_*red 5 python pygame

几秒钟后(大约5秒),这段简单的代码崩溃(窗口没有响应).

import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((640, 480), 0, 24)
#clock = pygame.time.Clock()

#font = pygame.font.Font(None, 32)

cycles = 0
while True:
    screen.fill(0)
#    text = font.render('Cycles : %d' % cycles, True, (255, 255, 255))
#    screen.blit(text, (100, 100))

    cycles += 1

    pygame.display.update()
Run Code Online (Sandbox Code Playgroud)

如果我取消注释注释行,我可以清楚地看到程序在显示47到50之间的值时失控.

我使用python 2.7和pygame 1.9.2,Windows 8(64位)和Eclipse + PyDev.

use*_*752 11

pygame.event.get()在while循环的开头调用.

  • 如果你没有对pygame事件做任何事情,那么你可以使用`pygame.event.pump`而不是`pygame.event.get`."如果您未能长时间调用事件队列,系统可能会判断您的程序已被锁定." https://www.pygame.org/docs/ref/event.html#pygame.event.pump (2认同)

Ted*_*man 5

您需要定期调用pygame.event模块中的四个功能之一,以使pygame在内部与操作系统进行交互。否则,操作系统会认为您的游戏已崩溃。因此,请确保您调用以下其中一项:

  • pygame.event.get() 返回事件队列中当前所有事件的列表。
  • pygame.event.poll()从事件队列中返回单个事件,或者pygame.NOEVENT如果队列为空,则返回一个事件。
  • pygame.event.wait() 从事件队列返回单个事件,或者等待直到可以返回事件为止。
  • pygame.event.pump()允许pygame处理内部动作。当您不想处理事件队列中的事件时很有用。