首页 > 解决方案 > 为什么 pygame 为我冻结?

问题描述

这是我的代码

import pygame
import sys
pygame.init()
from pygame import *
from sys import *

pygame.display.set_mode((500, 500))
pygame.time.Clock()

runGame = True

while runGame == True:

    currentKeys = pygame.key.get_pressed()

    if currentKeys[K_ESCAPE] == True:
        runGame = False

    pygame.time.Clock().tick(60)

pygame.quit()
sys.quit()

我只是想要一个在 Esc 按键时关闭的显示器。这段代码有什么问题?

标签: pythonpygame

解决方案


可能事件队列已满,因此窗口不会对来自操作系统/窗口管理器的事件做出反应。

确保在你的游戏循环中调用pygame.event.get()(或)。pygame.event.pump

来自pygame.event.pump

对于游戏的每一帧,您都需要对事件队列进行某种调用。这确保您的程序可以在内部与操作系统的其余部分进行交互。如果您没有在游戏中使用其他事件函数,则应调用 pygame.event.pump() 以允许 pygame 处理内部操作。

如果您的程序通过其他 pygame.event 函数持续处理队列上的事件,则不需要此函数。

有一些重要的事情必须在事件队列内部处理。主窗口可能需要重新绘制或响应系统。如果您长时间未能调用事件队列,系统可能会判定您的程序已锁定。


推荐阅读