Объект NoneType не имеет атрибута play

import pygame as pg, sys
from pygame.locals import *
import os

pg.mixer.pre_init(44100, 16, 2, 4096) 
pg.init()

a = pg.mixer.music.load("./Sounds/ChessDrop2.wav")
a.play()

Приведенный выше код - это то, что я написал для проверки возможности воспроизведения звука через Pygame. Мой файл ChessDrop2.wav представляет собой 16-битный файл wav-PCM, потому что, когда файл был 32-битным PCM, pygame распознал его как неизвестный формат. Теперь эта ошибка исчезла, когда я запустил код, но вместо этого в моей оболочке появляется ошибка ниже. Я назначил звуковой файл переменной 'a', поэтому звук не должен воспроизводиться? Моя версия python - 3.6.1, а pygame - 1.9.3.

a.play()
AttributeError: 'NoneType' object has no attribute 'play'

2 ответа

Эта функция не возвращает никакого объекта, который можно использовать, проверьте документацию:

https://www.pygame.org/docs/ref/music.html

после загрузки файла вы должны использовать

pg.mixer.music.play()

Как сказал @CaMMelo pygame.mixer.music.load(filename) Метод не возвращает объект.

Однако, если вы ищете возвращаемый объект после загрузки, вы можете попробовать pygame.mixer.Sound.

pygame.mixer.Sound
Создать новый объект Sound из файла или объекта буфера

from pygame import mixer
mixer.init()
sound = mixer.Sound("yourWaveFile.wav")
sound.play()
Другие вопросы по тегам