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

我知道有一个函数可以用于 可可 应用, NSBeep, ,但我认为这与此没有太大关系。

我也尝试过

print('\a')

但这没有用。

我正在使用 Mac,如果你看不出我的 可可 评论,这样可能会有所帮助。

有帮助吗?

解决方案

你有没有尝试过 :

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

这对我在 Mac OS 10.5 上有效

实际上,我认为您最初的尝试经过一些修改也可以工作:

print('\a')

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

其他提示

如果您安装了 PyObjC(Python - Objective-C 桥接器)或正在 OS X 10.5 的系统 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,您有很多自定义选项,您可以另外尝试一下。

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

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

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

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

以巴里·沃克的答案为基础……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'

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top