Pergunta

Gostaria que um programa python me alertasse quando concluir sua tarefa emitindo um bipe.Atualmente, eu uso import os e depois use um programa de fala da linha de comando para dizer "Processo completo". Eu prefiro ser um "sino" simples.

Eu sei que existe uma função que pode ser usada em Cacau aplicativos, NSBeep, mas não acho que isso tenha muito a ver com isso.

Eu também tentei

print('\a')

mas isso não funcionou.

Estou usando um Mac, se você não percebeu pelo meu Cacau comente, então isso pode ajudar.

Foi útil?

Solução

Você tentou :

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

Isso funciona para mim aqui no Mac OS 10.5

Na verdade, acho que sua tentativa original também funciona com uma pequena modificação:

print('\a')

(Você só precisa das aspas simples em torno da sequência de caracteres).

Outras dicas

Se você tiver PyObjC (a ponte Python - Objective-C) instalado ou estiver executando no sistema python do OS X 10.5 (que vem com PyObjC), você pode fazer

from AppKit import NSBeep
NSBeep()

para reproduzir o alerta do sistema.

Experimentei o mixer do módulo pygame e funcionou bem.Primeiro instale o módulo:

$ sudo apt-get install python-pygame

Então no programa, escreva isto:

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

Com o pygame você tem muitas opções de personalização, que você também pode experimentar.

Tive que desligar a opção "Silenciar campainha do terminal" em meu perfil de terminal ativo no iTerm para print('\a') trabalhar.Pareceu funcionar bem por padrão no Terminal.

Você também pode usar o módulo Mac Carbon.Snd para reproduzir o bipe do sistema:

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

Os módulos Carbon não possuem nenhuma documentação, então tive que usar help(Carbon.Snd) para ver quais funções estavam disponíveis.Parece ser uma interface direta para o Carbon, então os documentos do Apple Developer Connection provavelmente ajudam.

Com base na resposta de Barry Wark ...NSBeep() do AppKit funciona bem, mas também faz com que o ícone do terminal/aplicativo na barra de tarefas salte.Algumas linhas extras com NSSound() evita isso e dá a oportunidade de usar outro som:

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

Arquivos de som padrão podem ser encontrados via linha de comando locate /System/Library/Sounds/*.aiffO arquivo usado por NSBeep() parece ser '/System/Library/Sounds/Funk.aiff'

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top