我的Pygame程序有问题。我需要帮助。 wav文件与python文件位于同一目录中。 我在终端Python3中运行它:
import pygame.mixer
sounds = pygame.mixer
sounds.init()
def wait_finish(channel):
while channel.get_busy():
pass
asked = 0
true = 0
false = 0
choice = str(input("Push 1 for true, 2 for false, 0 to end"))
while choice != '0':
if choice == '1':
asked = asked + 1
true = true + 1
s = sounds.Sound("correct.wav")
wait_finish(s.play())
if choice == '2':
asked = asked + 1
false = false + 1
s = sounds.Sound("wrong.wav")
wait_finish(s.play())
choice = str(input("Push 1 for true, 2 for false, 0 to end"))
print ("you asked" +str(asked) + "questions")
print ("there were" +str(false) + "wrong answers")
print ("and" + str(true) + "correct answers")
它抛出 - pygame.error:
无法打开文件'correct.wav'
答案 0 :(得分:1)
我遇到了同样的问题,无法使用此代码:
correctSound = pygame.mixer.Sound('jingle3.wav')
我得到了pygame错误:
无法打开文件'jingle3.wav'
通过将'jingle3.wav'加载到Audicity并将其从32位PCM更改为16位PCM .wav文件来解决问题。之后,pygame.mixer.Sound工作得很好。
我在这个论坛上得到了这个提示,并且它有效!
答案 1 :(得分:0)
我不会在评论部分进行讨论,而是发布此内容
将def wait_finish(channnel):
更改为def wait_finish(channel):
并解决sounds.Sound
而不是sounds.Sounds
的问题后,该程序可以正常使用我机器上的.wav文件。
我确信调用error.wav文件的声音或声音的错误将解释"无法打开文件wrong.wav"消息。
如果pygame不喜欢该文件的某些内容,它可能无法播放它,这就是像以下一样的行:
sounds.pre_init(frequency=22050, size=-16, channels=2, buffer=4096)
(在sounds.init()
之前调用)可能会发挥作用
(注意,您可能必须使用不同的缓冲区选项,因为我正在使用pygame for python 2.7进行测试)
在我的方框中,如果pygame不喜欢或找不到该文件,我完全没有任何错误,只有当发出请求时,扬声器会点击。
我现在可以建议的是,你尝试使用一个完全不同的wav文件到当前用于错误答案的文件,看看它是否有所作为。
为了记录,我将wait_finish函数更改为:
def wait_finish(channel):
while channel.get_busy():
pygame.time.Clock().tick(10)