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'