68

我想让一个 python 程序在它完成任务时发出哔哔声来提醒我。目前,我使用import os然后使用命令行语音程序说“处理完成”。我宁愿它是一个简单的“铃铛”。

我知道Cocoa应用程序中可以使用一个功能NSBeep,但我认为这与此没有太大关系。

我也试过

print(\a)

但这没有用。

我正在使用 Mac,如果您无法通过我的Cocoa评论来判断,那么这可能会有所帮助。

4

6 回答 6

84

你有没有尝试过 :

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

这在 Mac OS 10.5 上对我有用

实际上,我认为您最初的尝试也可以稍作修改:

print('\a')

(您只需要字符序列周围的单引号)。

于 2008-08-17T21:46:02.533 回答
12

如果您安装了 PyObjC(Python - Objective-C 桥)或正在 OS X 10.5 的系统 python(PyObjC 附带)上运行,您可以这样做

from AppKit import NSBeep
NSBeep()

播放系统警报。

于 2008-08-29T15:47:05.843 回答
9

我尝试了 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,你有很多自定义选项,你可以另外尝试。

于 2011-05-24T12:14:54.530 回答
7

我必须在 iTerm 的活动终端配置文件中关闭“静音终端铃”选项print('\a')才能工作。默认情况下,它在终端中似乎工作正常。

您也可以使用 Mac 模块Carbon.Snd播放系统提示音:

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

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

于 2008-08-17T21:56:10.750 回答
3

以 Barry Wark 的回答为基础...... NSBeep()来自 AppKit 的工作正常,但也会使任务栏中的终端/应用程序图标跳转。一些额外的行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'

于 2017-10-14T09:37:20.923 回答
-3

使用 beepy 模块中的“哔”功能,您可以听到下面屏幕截图中提到的声音。

从哔哔声模块中,您可以选择您喜欢的声音

于 2020-04-09T05:23:57.047 回答