我有一些 python 代码,它使用 pygame 窗口来确定按下的键。当按下一个键时,代码会开始执行一些操作,然后返回查看下一个按下的键可能是什么。
我遇到的问题是,如果用户重复按下某个键,即使“代码开始执行操作”,pygame 似乎也会记住按下的内容,而不是等待下一次按键。我想要的是让代码在“开始做事情”完成时忽略任何按键,然后一旦完成,就得到下一个按键。希望这是有道理的!
import pygame
import time
pygame.init()
screen = pygame.display.set_mode((450,282))
screen.fill((0,0,0))
pygame.display.flip()
clock = pygame.time.Clock()
done = False
def go_and_do_things():
print("doing things")
time.sleep(2)
print("things done")
# Loop as long as done == False
while not done:
for event in pygame.event.get(): # User did something
if event.type == pygame.KEYDOWN:
keypressedcode = event.key # This is the ASCII code
print("keypressedcode is " + str(keypressedcode))
go_and_do_things()
elif event.type == pygame.QUIT: # If user clicked close
done = True # Flag that we are done so we exit this loop
clock.tick(60)
time.sleep(4)
pygame.quit()
最佳答案
您可以使用pygame.event.clear 。如下所示,它将在 go_and_do_things() 期间丢弃所有按键。
while not done:
for event in pygame.event.get(): # User did something
# Any key down
if event.type == pygame.KEYDOWN:
keypressedcode = event.key # This is the ASCII code
print("keypressedcode is " + str(keypressedcode))
go_and_do_things()
pygame.event.clear(eventtype=[pygame.KEYDOWN,
pygame.KEYUP)
elif event.type == pygame.QUIT: # If user clicked close
done = True # Flag that we are done so we exit this loop
clock.tick(60)
关于python - 停止 Pygame 中的多个键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59308608/