python - 如何停止 pygame 窗口冻结?
问题描述
当我运行代码时,一个蓝色矩形显示在其正确的位置,但是整个窗口冻结并最终崩溃。我怎样才能解决这个问题?
import pygame
win = pygame.display.set_mode((500,500))
pygame.display.set_caption("First Game")
run = True
while run:
pygame.time.delay(100)
filled_rect = pygame.Rect(100, 100, 25, 25)
pygame.draw.rect(win, (0,0,255), filled_rect)
pygame.display.update()
解决方案
您必须添加一个事件循环。通过pygame.event.pump()
或处理事件pygame.event.get()
。因此,处理了 IO 和内部事件,并且窗口不断响应。例如:
import pygame
win = pygame.display.set_mode((500,500))
pygame.display.set_caption("First Game")
run = True
while run:
pygame.time.delay(100)
# handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
# clear the disaply
win.fill(0)
# draw the scene
filled_rect = pygame.Rect(100, 100, 25, 25)
pygame.draw.rect(win, (0,0,255), filled_rect)
# update the dispaly
pygame.display.update()
pygame.quit()
推荐阅读
- javascript - 在 Vue.js 中出现验证错误时如何突出显示输入的边框颜色?
- python - 有什么方法可以传递 args 值来传递 django celery 定期任务?
- single-sign-on - 使用不同域的 Auth0 自动登录 - 使用多个域的 Auth0 单点登录
- c# - 图像在 collectionview 中加载速度非常慢,这也使我的滚动冻结并运行缓慢
- reactjs - 数组更改时 UI 不更新 React
- php - 将时隙与可用时隙进行比较
- azure-functions - Azure 函数返回 404
- android - 如何从布局文件访问 RecyclerView 适配器类中的复选框视图?
- android - 当 apk 已在 Playstore 中上传时,Firebase ID 始终返回 null
- javascript - 对js数字表示和他的位操作有疑问?