从Python Tkinter中的特定位置播放声音

时间:2013-04-05 09:14:52

标签: python audio

目标

当用户启动应用程序时,从位置D:1.wav播放wav文件

研究

看到以下问题:

How would I go about playing an alarm sound in python?

Play audio with Python

我尝试了什么

我尝试了以下几行:

示例1

import winsound
winsound.PlaySound('D:\1.wav',winsound.SND_FILENAME)  ##Did not work

示例2

import winsound
winsound.PlaySound('1.wav',winsound.SND_FILENAME)  ##DID not work

我获得默认声音的时间都不是根据音频文件播放的声音

  1. 当我写winsound.PlaySound('1.wav',winsound.SND_FILENAME)时,python会检查文件1.wav吗?在哪个目录?
  2. 为什么标志winsound.SND_FILENAME用于?
  3. specs Python 2.7 TKinter 8.5 Windows XP SP

    帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

更改

winsound.PlaySound('D:\1.wav',winsound.SND_FILENAME)

winsound.PlaySound('D:\\1.wav',winsound.SND_FILENAME)

防止python逃离你的路径:

>>> a = '\1.wav'
>>> a
'\x01.wav'
  

winsound.SND_FILENAME

     

声音参数是WAV文件的名称。不要与SND_ALIAS一起使用。

(来自winsound docs

如果您还没有使用标志winsound.SND_NODEFAULT,则winsound会在找不到您指定的文件时播放默认声音。

创建一个文件夹(例如D:\test_sounds\),其中包含您的wav文件,add that folder到您的PYTHONPATH变量,然后再次尝试运行您的代码。或者(更好的是,如果您打算分发代码),请按照我刚刚链接的相同帖子,将其添加到您的代码中:

import sys
if "D:\\my_sound_folder" not in sys.path:
    sys.path.append("D:\\my_sound_folder")

然后您可以致电winsound.PlaySOund('1.wav', winsound.SND_FILENAME),因为它将在您的可用路径中