在 pygame 后退出程序
Quit from program in pygame
我想了解为什么我的程序在尝试退出游戏时失去响应。我做了一些测试,这里是代码:
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()
如果执行此代码 - windows 当用户按下“q”键时无法正确退出程序。
如果删除注释符号 # 形成 14、15、16 字符串,所有将正常工作。按“q”键将正常退出程序。
只有一个问题 - 为什么???
您必须处理应用程序循环中的事件。见 pygame.event.get()
respectively pygame.event.pump()
:
For each frame of your game, you will need to make some sort of call to the event queue. This ensures your program can internally interact with the rest of the operating system.
如果您不处理事件,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()
我想了解为什么我的程序在尝试退出游戏时失去响应。我做了一些测试,这里是代码:
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()
如果执行此代码 - windows 当用户按下“q”键时无法正确退出程序。 如果删除注释符号 # 形成 14、15、16 字符串,所有将正常工作。按“q”键将正常退出程序。 只有一个问题 - 为什么???
您必须处理应用程序循环中的事件。见 pygame.event.get()
respectively pygame.event.pump()
:
For each frame of your game, you will need to make some sort of call to the event queue. This ensures your program can internally interact with the rest of the operating system.
如果您不处理事件,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()