python - 为什么 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 按键时关闭的显示器。这段代码有什么问题?
解决方案
可能事件队列已满,因此窗口不会对来自操作系统/窗口管理器的事件做出反应。
确保在你的游戏循环中调用pygame.event.get()
(或)。pygame.event.pump
对于游戏的每一帧,您都需要对事件队列进行某种调用。这确保您的程序可以在内部与操作系统的其余部分进行交互。如果您没有在游戏中使用其他事件函数,则应调用 pygame.event.pump() 以允许 pygame 处理内部操作。
如果您的程序通过其他 pygame.event 函数持续处理队列上的事件,则不需要此函数。
有一些重要的事情必须在事件队列内部处理。主窗口可能需要重新绘制或响应系统。如果您长时间未能调用事件队列,系统可能会判定您的程序已锁定。
推荐阅读
- angular - Angular - 类型“desc”不能分配给类型“null”
- javascript - 如何使用javascript将html表单数据保存在txt文件中
- docker - 在主机 Nginx 后面使用多个 dockerized Nginx
- node.js - Flutter socket.io 客户端未通过 https 与 node.js socket.io 服务器连接
- jmeter - JMeter Beanshell - 将文件另存为 pdf
- javascript - 我该怎么做才能从 java 解析 javascript 类?
- c - 为什么我在任务管理器中没有找到要杀死的进程时经常得到“ld返回1退出状态”?
- splunk - Splunk 搜索格式
- php - 如何将标签与 ui-select 链接
- python - Python - AWS Cognito 在用户电子邮件更改时需要验证电子邮件确认