NoneType对象没有属性'play'

时间:2017-12-30 11:31:59

标签: python audio pygame mixer

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将其识别为未知格式。现在,当我运行代码时错误消失,但下面的错误会弹出我的shell而不是。我已将声音文件分配给变量'a',所以声音不应播放?我的python版本是3.6.1,pygame是1.9.3。

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

2 个答案:

答案 0 :(得分:2)

此函数不返回任何要使用的对象,请查看文档:

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

加载文件后,您应该使用

pg.mixer.music.play()

答案 1 :(得分:0)

由于@CaMMelo声明from pygame import mixer mixer.init() sound = mixer.Sound("yourWaveFile.wav") sound.play() 方法不返回对象。

但是,如果您在加载后查找返回对象,则可能需要尝试pygame.mixer.Sound

  

pygame.mixer.Sound
  从文件或缓冲区对象

创建一个新的Sound对象
from Queue import Queue
from threading import Thread 

class My_Parser(tweepy.StreamListener):

    def __init__(self, q = Queue()):

        num_worker_threads = 4
        self.q = q
        for i in range(num_worker_threads):
             t = Thread(target=self.do_stuff)
             t.daemon = True
             t.start()

    def on_data(self, data):

        self.q.put(data)


    def do_stuff(self):
        while True:

            do_whatever(self.q.get())


            self.q.task_done()