退出pygame中的程序

问题描述 投票:0回答:1

我试图理解为什么当我尝试退出游戏时我的程序失去响应。我做了一些测试,这是代码:

import pygame
import time

pygame.init()

run=True

pygame.display.set_caption("test")
win=pygame.display.set_mode((200,200))

while run==True:
    pygame.time.delay(16)
    keys=pygame.key.get_pressed()
    #for event in pygame.event.get():
        #if event.type == pygame.QUIT:
            #run=False

    win.fill((125,125,125))
    if keys[pygame.K_q]:
            run=False
    pygame.display.update()
pygame.quit()

如果执行此代码 - 当用户按下“q”键时,Windows 无法正确退出程序。 如果删除注释符号 # 形成 14,15,16 字符串,所有将正常工作。按“q”键将正常退出程序。 只有一个问题 - 为什么???

python python-3.x pygame key exit
1个回答
2
投票

您必须处理应用程序循环中的事件。分别参见

pygame.event.get()
pygame.event.pump()
:

对于游戏的每一帧,您都需要对事件队列进行某种调用。这确保您的程序可以在内部与操作系统的其余部分进行交互。

如果您不处理事件,

pygame.key.get_pressed()
将停止工作。处理事件时,会在内部评估
pygame.key.get_pressed()
返回的键的状态。

至少你得打电话

pygame.event.pump()
:

while run==True:
    pygame.time.delay(16)
    pygame.event.pump()

    keys=pygame.key.get_pressed()
    if keys[pygame.K_q]:
        run=False

    win.fill((125,125,125))
    pygame.display.update()
© www.soinside.com 2019 - 2024. All rights reserved.