Python声音(“贝尔”)

我想通过发出嘟嘟声来完成任务时,有一个Python程序会提醒我。 目前,我使用import os ,然后使用命令行语音程序来说“过程完成”。 我宁愿它是一个简单的“钟”。

我知道有一个可以在Cocoa应用程序NSBeep中使用的函数,但是我觉得这跟这个没什么关系。

我也尝试print(\a)但没有奏效。

我正在使用Mac,如果你不能通过我的cocoa评论告诉,所以这可能会有所帮助。

谢谢!

你有没有尝试过 :

 import sys sys.stdout.write('\a') sys.stdout.flush() 

这在Mac OS 10.5上适用于我

其实,我认为你原来的尝试也有一些修改:

 print('\a') 

(你只需要在字符序列周围单引号)。

如果你已经安装了PyObjC(Python-Objective-C桥),或者正在OS X 10.5的python系统上运行python(PyObjC),你可以

 from AppKit import NSBeep NSBeep() 

发挥系统警报。

我尝试了pygame模块的混音器,它工作正常。 首先安装模块:

 $ sudo apt-get install python-pygame 

然后在程序中写下这个:

 from pygame import mixer mixer.init() #you must initialize the mixer alert=mixer.Sound('bell.wav') alert.play() 

使用pygame你有很多的定制选项,你可以另外尝试一下。

我必须closuresiTerm中有效的terminalconfiguration文件中的“Silence terminal bell”选项才能print('\a') 。 在terminal默认情况下似乎工作正常。

您也可以使用Mac模块Carbon.Snd来播放系统哔声:

 >>> import Carbon.Snd >>> Carbon.Snd.SysBeep(1) >>> 

碳模块没有任何文档,所以我不得不使用help(Carbon.Snd)来查看可用的function。 它似乎是Carbon上的一个直接接口,所以Apple Developer Connection上的文档可能会有帮助。

基于Barry Wark的答案… AppKit的NSBeep()工作正常,但也使任务栏中的terminal/应用程序图标跳转。 NSSound()一些额外的行避免了这一点,并提供了使用另一个声音的机会:

 from AppKit import NSSound #prepare sound: sound = NSSound.alloc() sound.initWithContentsOfFile_byReference_('/System/Library/Sounds/Ping.aiff', True) #rewind and play whenever you need it: sound.stop() #rewind sound.play() 

标准声音文件可以通过命令行locate /System/Library/Sounds/*.aiff NSBeep()使用的文件似乎是'/System/Library/Sounds/Funk.aiff'