鍍金池/ 問答/Python/ 報(bào)錯(cuò):'Event' object has no attribute 'key'

報(bào)錯(cuò):'Event' object has no attribute 'key'

在我的 game_function 中出現(xiàn)的錯(cuò)誤,直接在 check-events 中加入按 q 退出選項(xiàng)就會(huì)出現(xiàn)這個(gè)報(bào)錯(cuò),但是放在 check-down 中卻提示這個(gè)錯(cuò)誤

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'
回答
編輯回答
淚染裳

因?yàn)椴皇撬械膃vent都有KEY值,所以你必須先判斷這個(gè)event類型是什么,然后再去用他的KEY,你直接用KEY,這個(gè)屬于語法錯(cuò)誤了

2018年3月29日 01:48
編輯回答
脾氣硬
elif event.key==pygame.K_w:

是不是應(yīng)該改成:

elif event.type==pygame.K_w: 
2018年8月8日 04:13