我想让一个python程序通过发出哔哔声来提醒我。 当前,我使用import os,然后使用命令行语音程序说"处理完成"。 我宁愿它是一个简单的"钟"。
我知道有一个可用于Cocoa应用程序的功能NSBeep,但是我认为这与该功能没有任何关系。
我也尝试过
但这没用。
我使用的是Mac,如果您无法通过我的可可粉评论得知,则可能会有所帮助。
你有没有尝试过 :
1 2 3
| import sys
sys.stdout.write('\a')
sys.stdout.flush() |
在Mac OS 10.5上适合我
实际上,我认为您的原始尝试也可以进行一些修改:
(您只需要在字符序列周围加上单引号)。
如果您已安装PyObjC(Python-Objective-C桥)或在OS X 10.5的系统python(PyObjC随附)上运行,则可以执行
1 2
| from AppKit import NSBeep
NSBeep() |
播放系统警报。
我从pygame模块尝试了混音器,它工作正常。首先安装模块:
1
| $ sudo apt-get install python-pygame |
然后在程序中编写以下代码:
1 2 3 4
| from pygame import mixer
mixer.init() #you must initialize the mixer
alert=mixer.Sound('bell.wav')
alert.play() |
使用pygame,您可以使用很多自定义选项,还可以尝试这些自定义选项。
我必须在iTerm的活动终端配置文件中关闭"静音终端铃声"选项,以使print('\a')正常工作。默认情况下,它在Terminal中似乎可以正常工作。
您还可以使用Mac模块Carbon.Snd播放系统提示音:
1 2 3
| >>> import Carbon.Snd
>>> Carbon.Snd.SysBeep(1)
>>> |
Carbon模块没有任何文档,因此我不得不使用help(Carbon.Snd)来查看可用的功能。它似乎是Carbon的直接接口,因此Apple Developer Connection上的文档可能会有所帮助。
建立在Barry Wark的答案上...
AppKit中的NSBeep()工作正常,但也会使任务栏中的终端/应用程序图标跳转。
NSSound()的一些额外行避免了这种情况,并提供了使用另一种声音的机会:
1 2 3 4 5 6 7
| 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'