Python声音("贝尔")

sta*_*zel 53 python audio macos terminal

我希望有一个python程序通过发出哔声来完成任务时提醒我.目前,我使用import os然后使用命令行语音程序来说"处理完成".我更倾向于它是一个简单的"钟声".

我知道有一个可以在Cocoa应用程序中使用的函数NSBeep,但我认为这与此有很大关系.

我也试过了

print('\a')
Run Code Online (Sandbox Code Playgroud)

但那没用.

我正在使用Mac,如果你不能通过我的Cocoa评论来说明,那么这可能会有所帮助.

gbc*_*gbc 69

你有没有尝试过 :

import sys
sys.stdout.write('\a')
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

这适用于我在Mac OS 10.5上

实际上,我认为您的原始尝试也可以进行一些修改:

print('\a')
Run Code Online (Sandbox Code Playgroud)

(你只需要围绕字符序列的单引号).

  • @kecske在终端中通常[禁用音响](http://www.cyberciti.biz/faq/how-to-linux-disable-or-turn-off-beep-sound-for-terminal/)配置,这意味着这"工作",但没有噪音(错误,只是注意到你的评论发布于大约9个月前) (14认同)
  • 我在ubuntu上,它对我不起作用.任何的想法? (4认同)
  • 我发现在 Python3 中使用双引号或单引号没有区别。另外,还有一个轻微的改进,可以避免在响铃字符后打印换行符,并在没有附加语句的情况下强制刷新(因为我们禁用了换行符,所以需要刷新): print('\a', end='' ,齐平=真) (2认同)

Bar*_*ark 10

如果你安装了PyObjC(Python-Objective-C桥)或者在OS X 10.5的系统python(随PyObjC一起提供)上运行,你可以做

from AppKit import NSBeep
NSBeep()
Run Code Online (Sandbox Code Playgroud)

播放系统警报.


Abh*_*Das 9

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

$ sudo apt-get install python-pygame
Run Code Online (Sandbox Code Playgroud)

然后在程序中写下这个:

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

有了pygame,你有很多自定义选项,你可以另外试验.


mar*_*asc 5

我不得不在iTerm的活动终端配置文件中关闭"Silence terminal bell"选项print('\a')才能工作.它在Terminal中默认工作正常.

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

>>> import Carbon.Snd
>>> Carbon.Snd.SysBeep(1)
>>> 
Run Code Online (Sandbox Code Playgroud)

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