为什么尝试使用 pygame.mixer.Channel.play(Sound) 引发 SystemError?
Why is attempting to use pygame.mixer.Channel.play(Sound) raising a SystemError?
我一直难以让 Sound 对象在我的程序中播放;我没有收到任何类型的错误消息,音频文件本身没有损坏,但每次我尝试 运行 我的程序时,我的扬声器都没有声音。我尝试的第一件事是 pygame.mixer.Sound.play()
以播放声音,当我没有听到声音时,我仔细检查以确保我的计算机上的扬声器没有静音,我将音量调高,我又试了一次。我仍然没有听到它在播放,所以我尝试创建一个 Channel 对象并告诉程序使用以下代码示例在该频道上播放声音:
from time import sleep
from pygame import mixer
###
mixer.init() #initialize mixer module
#########
soundObj = mixer.Sound("mySound.wav") #create Sound object from .wav file
soundChn = mixer.Channel(0) #create Channel object to play sounds from
###
soundChn.play(soundObj, 0) #play soundObj on the channel once - ERROR IS HERE
sleep(soundObj.get_length()) #pause program for the duration of soundObj
当我 运行 我的程序为了测试此代码是否有效时,出现了对 soundChn.play(soundObj, 0)
的回溯,以及错误消息 SystemError: Bad call flags in PyCFunction_Call. METH_OLDARGS is no longer supported!
谁能给我解释一下——请用最通俗易懂的英语,因为我很困惑——这个错误消息到底是什么意思,我需要做什么才能解决我的问题?谢谢!
您在计算机上安装的 pygame 版本似乎是旧版本,使用了已弃用的方法。
因为它似乎可以在我的电脑上同时使用 Python 2 和 3,我建议通过 运行
更新 pygame
pip3 install --user pygame # or pip2 if using python2
我一直难以让 Sound 对象在我的程序中播放;我没有收到任何类型的错误消息,音频文件本身没有损坏,但每次我尝试 运行 我的程序时,我的扬声器都没有声音。我尝试的第一件事是 pygame.mixer.Sound.play()
以播放声音,当我没有听到声音时,我仔细检查以确保我的计算机上的扬声器没有静音,我将音量调高,我又试了一次。我仍然没有听到它在播放,所以我尝试创建一个 Channel 对象并告诉程序使用以下代码示例在该频道上播放声音:
from time import sleep
from pygame import mixer
###
mixer.init() #initialize mixer module
#########
soundObj = mixer.Sound("mySound.wav") #create Sound object from .wav file
soundChn = mixer.Channel(0) #create Channel object to play sounds from
###
soundChn.play(soundObj, 0) #play soundObj on the channel once - ERROR IS HERE
sleep(soundObj.get_length()) #pause program for the duration of soundObj
当我 运行 我的程序为了测试此代码是否有效时,出现了对 soundChn.play(soundObj, 0)
的回溯,以及错误消息 SystemError: Bad call flags in PyCFunction_Call. METH_OLDARGS is no longer supported!
谁能给我解释一下——请用最通俗易懂的英语,因为我很困惑——这个错误消息到底是什么意思,我需要做什么才能解决我的问题?谢谢!
您在计算机上安装的 pygame 版本似乎是旧版本,使用了已弃用的方法。
因为它似乎可以在我的电脑上同时使用 Python 2 和 3,我建议通过 运行
更新 pygamepip3 install --user pygame # or pip2 if using python2