Question

J'aimerais qu'un programme python m'alerte lorsqu'il a terminé sa tâche en émettant un bip.Actuellement, j'utilise import os puis utilisez un programme de parole de ligne de commande pour dire «Processus complet». Je préfère beaucoup que ce soit une simple "cloche".

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

j'ai aussi essayé

print('\a')

mais cela n'a pas fonctionné.

J'utilise un Mac, si vous ne pouviez pas le savoir Cacao commentaire, donc cela peut aider.

Était-ce utile?

La solution

As-tu essayé :

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

Cela fonctionne pour moi ici sur Mac OS 10.5

En fait, je pense que votre tentative originale fonctionne également avec une petite modification :

print('\a')

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

Autres conseils

Si PyObjC (le pont Python - Objective-C) est installé ou si vous utilisez le système Python d'OS X 10.5 (fourni avec PyObjC), vous pouvez le faire

from AppKit import NSBeep
NSBeep()

pour lire l'alerte système.

J'ai essayé le mixeur du module pygame, et ça marche bien.Installez d'abord le module :

$ sudo apt-get install python-pygame

Puis 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 disposez de nombreuses options de personnalisation, que vous pouvez également expérimenter.

J'ai dû désactiver l'option « Silence de la cloche du terminal » dans mon profil de terminal actif dans iTerm pour print('\a') travailler.Cela semblait bien fonctionner par défaut dans Terminal.

Vous pouvez également utiliser le module Mac Carbon.Snd pour émettre le bip du système :

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

Les modules Carbon n'ont aucune documentation, j'ai donc dû utiliser help(Carbon.Snd) pour voir quelles fonctions étaient disponibles.Cela semble être une interface directe sur Carbon, donc la documentation sur Apple Developer Connection est probablement utile.

S'appuyant sur la réponse de Barry Wark...NSBeep() d'AppKit fonctionne bien, mais fait également sauter l'icône du terminal/de l'application dans la barre des tâches.Quelques lignes supplémentaires avec NSSound() évite cela et donne la possibilité 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 audio standard peuvent être trouvés via la ligne de commande locate /System/Library/Sounds/*.aiffLe fichier utilisé par NSBeep() semble être '/System/Library/Sounds/Funk.aiff'

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top