2017-03-12 75 views
-2

我不知道为什么这不起作用,但它不捕获keydown。点击交叉工作正常,退出游戏。它可能是简单的东西,但我看不到它。 keydown在我的程序的其他部分工作正常,只是主菜单不起作用。下面是菜单部分的代码:Python PyGame KEYDOWN不工作

 while menuOver == False: 

      Screen.fill(background_colour) 
      font1 = pygame.font.SysFont("Impact", 100) 
      font2 = pygame.font.SysFont("Impact", 50) 
      font3 = pygame.font.SysFont("Impact", 25) 
      lblTitle = font1.render("Python", 100, (black)) 
      Screen.blit(lblTitle, (265, 50)) 

      lblSubTitle = font2.render("Created With Python", 100, (black)) 
      Screen.blit(lblSubTitle, (200, 200)) 

      lblEasy = font3.render('Easy - Press 1', 100, (red)) 
      Screen.blit(lblEasy, (100, 300)) 

      lblNormal = font3.render('Normal - Press 2', 100, (red)) 
      Screen.blit(lblNormal, (300, 300)) 

      lblNightmare = font3.render('Nightmare - Press 3', 100, (red)) 
      Screen.blit(lblNightmare, (525, 300)) 

      lblLeaderboard = font3.render('Press L To View Leaderboard', 100, (black)) 
      Screen.blit(lblLeaderboard, (90, 400)) 

      lblInstructions = font3.render('Press I To View Instructions', 100, (black)) 
      Screen.blit(lblInstructions, (425, 400)) 

      pygame.display.update() 

      for event in pygame.event.get(): 

       if event.type == pygame.QUIT: 
        pygame.quit() 

       if event.type == pygame.KEYDOWN: 

        if event.type == pygame.K_1: 

         menuOver = True 
+1

你必须检查'event.key == pygame.K_1',不'event.type == pygame.K_1' –

+0

我不敢相信我错过了!感谢您指出它已经让我停留了很久! – BoJ

回答

1

在您的代码,您键入event.type == pygame.K_1:,但它应该是if event.key == pygame.K_1

当您键入for event in pygame.event.get():时,它会将pygame.event.get()的每个元素插入到event中,每次一个。 event当您使用event.type时,会返回事件类型,并在使用event.key时按下相关键(如果相关)。

有关更多信息,请参阅https://www.pygame.org/docs/ref/event.html

编辑:对不起,我只是意识到你的问题得到回答在评论...

+1

发布答案仍然很好,因为这是彻底的,新的程序员会发现它很有帮助 – The4thIceman