Объект NoneType не имеет атрибута «играть»

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'

person Rabeden    schedule 30.12.2017    source источник
comment
ошибки означает, что load() возвращает None и, наконец, вы пытаетесь сделать None.play(). Вы проверяли документацию?   -  person furas    schedule 30.12.2017


Ответы (2)


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

https://www.pygame.org/docs/ref/music.html#pygame.mixer.music.load

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

pg.mixer.music.play()
person CaMMelo    schedule 30.12.2017

Как заявил @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()
person Anil_M    schedule 31.12.2017