2008-08-17 21 views
43

Me gustaría que un programa python me avise cuando ha completado su tarea emitiendo un pitido. Actualmente, uso import os y luego uso un programa de voz de línea de comando para decir "Proceso completo". Prefiero ser una simple "campana".Python Sound ("Bell")

Sé que hay una función que se puede utilizar en las aplicaciones de Cocoa, NSBeep, pero no creo que tenga mucho que ver con esto.

También he intentado print(\a) pero eso no funcionó.

Estoy usando una Mac, si no se puede decir por mi comentario de Cocoa, por lo que puede ayudar.

Gracias!

+6

'import os ; os.system ('say' Beer time. ''); print ('\ a \ a \ a') ' –

Respuesta

61

Ha intentado:

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

que funciona para mí aquí en Mac OS 10.5

En realidad, creo que el intento original, funciona también con una pequeña modificación:

print('\a') 

(Solo necesitas las comillas simples alrededor de la secuencia de caracteres).

+4

Estoy en Ubuntu, no funciona para mí. ¿Alguna idea? – kecske

+11

@kecske es común [desactivar la alarma sonora] (http://www.cyberciti.biz/faq/how-to-linux-disable-or-turn-off-beep-sound-for-terminal/) en configuraciones de terminal, lo que significa que esto "funciona", pero no hace ruido (err, acaba de notar que su comentario fue publicado hace unos 9 meses) – dbr

+0

Funciona también en Windows XP (en una aplicación de consola). – martineau

5

Tuve que desactivar la opción "Campana de terminal de silencio" en mi perfil de terminal activo en iTerm para print('\a') para trabajar. Parecía funcionar bien por defecto en la Terminal.

También puede utilizar el módulo de Mac Carbon.Snd para jugar el sonido del sistema:

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

Los módulos de carbono no tienen ninguna documentación, así que tuve que usar help(Carbon.Snd) para ver qué estaban disponibles funciones. Parece ser una interfaz directa con Carbon, por lo que los documentos de Apple Developer Connection probablemente sean útiles.

10

Si tiene PyObjC (Python - puente de Objective-C) instalado o está ejecutando en OS X sistema de pitón de 10.5 (que se incluye con PyObjC), se puede hacer

from AppKit import NSBeep 
NSBeep() 

para reproducir el sistema de alerta.

6

Probé el mezclador desde el módulo pygame, y funciona bien. En primer lugar instalar el módulo:

$ sudo apt-get install python-pygame 

Luego, en el programa, escribir lo siguiente:

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

Con pygame que tienen una gran cantidad de opciones de personalización, que puede experimentar adicionalmente con.

1

Basándose en la respuesta de Barry Wark ... NSBeep() de AppKit funciona bien, pero también hace que el icono de la terminal/aplicación en la barra de tareas salte. Unas pocas líneas adicionales con NSSound() evita que y le da la oportunidad de utilizar otro sonido:

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() 

archivos de sonido estándar se pueden encontrar a través de comandos locate /System/Library/Sounds/*.aiff El archivo utilizado por NSBeep() parece ser '/System/Library/Sounds/Funk.aiff'