python-3.x 退出Pygame中的程序

s4n0splo  于 12个月前  发布在  Python
关注(0)|答案(1)|浏览(110)

我试图理解为什么我的程序是loosing响应当我试图退出游戏.我做了一些测试,这里是代码:

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无法正确退出程序。如果删除注解符号# form 14,15,16字符串,所有都将正常工作。点击“q”键将正常退出程序。只有一个问题-为什么?

fnatzsnv

fnatzsnv1#

你必须在应用程序循环中处理事件。分别参见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()

字符串

相关问题