我希望最终用户点击" 2"显示框,一旦执行完毕,我希望他们能够点击这个框。加载其他功能。如果我使用两个处理程序,那么它会跳过一个处理" e"。基本上它会跳过第二个if语句。
if event.type == pygame.KEYDOWN and event.key == pygame.K_2:
highlight = pygame.image.load('Highlightmenu.png')
highlight = pygame.transform.scale(highlight, (270, 110))
window.blit(highlight,(316, 300))
pygame.display.flip()
title()
if event.type == pygame.KEYDOWN and event.key == pygame.K_e:
playerNames()
print("Loading the player names menu...")
答案 0 :(得分:2)
那是因为你的if语句错了。你把第二个if放在第一个里面。因此,只有当事件是KEYDOWN并且键是2,并且事件是KEYDOWN且键是e时,第二个if中的语句才会执行。由于密钥不能同时为2和e,因此它永远不会执行。
你应该像这样拆分:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_2:
highlight = pygame.image.load('Highlightmenu.png')
highlight = pygame.transform.scale(highlight, (270, 110))
window.blit(highlight,(316, 300))
pygame.display.flip()
title()
elif event.key == pygame.K_e:
playerNames()
print("Loading the player names menu...")
看起来你只想在之前按过2键才能回复e键。要解决此问题,您需要在程序中的某个位置保持状态。因此,当用户按下2时,它会变为不同的状态,然后您可以转到不同的状态。首先,您可以拥有一个可以保持您的状态的变量。稍后您可以查看[状态机]。1
除此之外,您的代码也存在一些问题。每次按下按钮时,都不应从磁盘加载文件。相反,在开头将它加载到字典中,并在需要时使用它。您不应该在事件循环中执行任何绘图代码。应该在事件循环之外调用blits和display flip。事件循环应该只更改定义应该是blit的变量。