报错:'Event' object has no attribute 'key'

在我的 game_function 中出现的错误,直接在 check-events 中加入按 q 退出选项就会出现这个报错,但是放在 check-down 中却提示这个错误

game——function:

import sys
import pygame
from bullet import Bullet

def check_keydown_events(event, ai_settings, screen, ship, bullets):
    if event.key==pygame.K_RIGHT:
        ship.moving_right=True
    elif event.key==pygame.K_LEFT :
        ship.moving_left =True
    elif event.key==pygame.K_SPACE :
        fire_bullet(ai_settings,screen,ship,bullets)
    elif event.key==pygame.K_q:
        sys.exit()
        
def fire_bullet(ai_settings, screen, ship, bullets):
    if len(bullets)<ai_settings.bullets_allowed:
        new_bullet = Bullet(ai_settings, screen, ship)
        bullets.add(new_bullet)
        
def check_keyup_events(event, ship):
    if event.key==pygame.K_RIGHT:
       ship.moving_right =False
    elif event.key==pygame.K_LEFT:
       ship.moving_left=False
       
def check_events(ai_settings, screen, ship, bullets):
    for event in pygame.event.get():
        if event.type==pygame.QUIT :
            sys.exit()
        elif event.type==pygame.KEYDOWN :
            check_keydown_events(event,ai_settings ,screen ,ship,bullets)
        elif event.type==pygame.KEYUP :
            check_keyup_events(event,ship)
        elif event.key==pygame.K_w:
            sys.exit()

def update_screen(ai_settings, screen, ship, bullets):
    screen.fill(ai_settings.bg_color)

    for bullet in bullets.sprites():
        bullet.draw_bullet()

    ship.blitme()
    pygame.display.flip()
    
def update_bullets(bullets):
    bullets.update()
    for bullet in bullets.copy():
        if bullet.rect.bottom<=0:
            bullets.remove(bullet)

按 w 就提示:

Event' object has no attribute 'key'
阅读 9.9k
2 个回答
elif event.key==pygame.K_w:

是不是应该改成:

elif event.type==pygame.K_w: 
新手上路,请多包涵

因为不是所有的event都有KEY值,所以你必须先判断这个event类型是什么,然后再去用他的KEY,你直接用KEY,这个属于语法错误了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题