【问题标题】:AttributeError: 'function' object has no attribute 'set_mode'AttributeError: 'function' 对象没有属性 'set_mode'
【发布时间】:2019-05-17 13:40:16
【问题描述】:

尝试编写游戏代码但收到此错误。

AttributeError: 'function' 对象没有属性 'set_mode'

from pygame import *
import sys
from os.path import abspath, dirname
from random import randint, choice
from IPython.core.display import display

SCREEN = display.set_mode((800, 600))
FONT = FONT_PATH + 'space_invaders.ttf'
IMG_NAMES = ['ship', 'mystery',
             'enemy1_1', 'enemy1_2',
             'enemy2_1', 'enemy2_2',
             'enemy3_1', 'enemy3_2',
             'explosionblue', 'explosiongreen', 'explosionpurple',
             'laser', 'enemylaser']
IMAGES = {name: image.load(IMAGE_PATH + '{}.png'.format(name)).convert_alpha()
          for name in IMG_NAMES}

还有,

NameError: 名称“图像”未定义

有什么想法我可能做错了吗?谢谢

【问题讨论】:

  • 您还没有初始化图像变量并直接调用函数。你需要初始化图像变量

标签: python pygame attributeerror


【解决方案1】:

你在from pygame import *但这不会让你打电话。 display.set_mode / image.loaddisplayimage模块也。

您的代码应如下所示:

import pygame
import sys
from os.path import abspath, dirname
from random import randint, choice

SCREEN = pygame.display.set_mode((800, 600))
FONT = FONT_PATH + 'space_invaders.ttf'
IMG_NAMES = ['ship', 'mystery',
             'enemy1_1', 'enemy1_2',
             'enemy2_1', 'enemy2_2',
             'enemy3_1', 'enemy3_2',
             'explosionblue', 'explosiongreen', 'explosionpurple',
             'laser', 'enemylaser']
IMAGES = {name: pygame.image.load(IMAGE_PATH + '{}.png'.format(name)).convert_alpha()
          for name in IMG_NAMES}

一般来说,您应该避免像from pygame import *的全局导入。

(我猜from IPython.core.display import display是一个自动导入你的IDE或类似的东西)。

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 2022-01-26
    • 2017-07-04
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多