Python Sonore ("Bell")

j'aimerais qu'un programme python m'alerte quand il a terminé sa tâche en faisant un bruit de bip. Actuellement, j'utilise import os et puis j'utilise un programme de parole en ligne de commande pour dire" traitement terminé."J'ai beaucoup plutôt être un simple "bell."

je sais qu'il y a une fonction qui peut être utilisée dans Cocoa apps, NSBeep, mais je ne pense pas que cela ait grand chose à voir avec ça.

j'ai aussi essayé print(a) mais ça n'a pas marché.

j'utilise un Mac, si vous ne pouvez pas le dire par mon commentaire de cacao, donc ça peut aider.

Merci!

48
demandé sur Brant Bobby 2008-08-18 01:33:39

5 réponses

avez-vous essayé:

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

qui fonctionne pour moi ici sur Mac OS 10.5

en fait, je pense que votre tentative originale fonctionne aussi avec une petite modification:

print('\a')

(vous avez juste besoin des guillemets simples autour de la séquence de caractères).

64
répondu gbc 2008-08-17 21:46:02

si vous avez PyObjC (the Python - Objective-C bridge) installé ou que vous êtes en cours D'exécution sur le système OS X 10.5 python( qui est fourni avec PyObjC), vous pouvez faire""

from AppKit import NSBeep
NSBeep()

pour jouer l'alerte système.

10
répondu Barry Wark 2008-08-29 15:47:05

j'ai essayé le mixeur du module pygame, et il fonctionne très bien. Installez d'abord le module:

$ sudo apt-get install python-pygame

alors dans le programme, écrivez ceci:

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

Avec pygame vous avez beaucoup d'options de personnalisation, vous pouvez également expérimenter avec.

7
répondu Abhranil Das 2011-05-24 12:14:54

j'ai dû désactiver l'option" Silence terminal bell "dans mon profil de Terminal actif dans iTerm pour print('\a') de travailler. Il semblait fonctionner très bien par défaut dans le Terminal.

vous pouvez également utiliser le module Mac Carbon.Snd pour jouer le bip système:

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

les modules Carbon n'ont pas de documentation, donc j'ai dû utiliser help(Carbon.Snd) pour voir quelles fonctions étaient disponibles. Il semble être une interface directe sur le carbone, donc les docs sur Apple Developer Connection aide probablement.

5
répondu markpasc 2008-08-17 21:56:10

basé sur la réponse de Barry Wark... NSBeep() d'AppKit fonctionne très bien, mais fait aussi sauter l'icône terminal/app dans la barre des tâches. Quelques lignes supplémentaires avec NSSound() évite cela et donne l'occasion d'utiliser un autre son:

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

les fichiers son Standard peuvent être trouvés via la ligne de commande locate /System/Library/Sounds/*.aiff Le fichier utilisé par NSBeep() semble être '/System/Library/Sounds/Funk.aiff'

1
répondu Martin Müller 2017-10-14 09:46:37