Python Sound ("Dzwonek")

Chciałbym, aby program Pythona ostrzegł mnie, gdy zakończy swoje zadanie, wydając sygnał dźwiękowy. Obecnie używam import os, a następnie używam programu mowy z linii poleceń, aby powiedzieć " Proces zakończony."Wolę to być proste" dzwonek."

Wiem, że istnieje funkcja, która może być używana w aplikacjach Cocoa, NSBeep, ale nie sądzę, że ma to z tym wiele wspólnego.

Próbowałem też print(\a), ale to nie zadziałało.

Używam Maca, jeśli nie można powiedzieć po moim kakao skomentuj, to może pomóc.

Dzięki!
Author: Brant Bobby, 2008-08-18

5 answers

Czy próbowałeś:

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

To działa dla mnie tutaj na Mac OS 10.5

Właściwie, myślę, że Twoja oryginalna próba działa również z małą modyfikacją:

print('\a')

(potrzebujesz tylko pojedynczych cudzysłowów wokół sekwencji znaków).

 64
Author: gbc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-17 21:46:02

Jeśli masz PyObjC (Python - Objective-C bridge) zainstalowany lub uruchomiony na systemie OS X 10.5 Python (który jest dostarczany z PyObjC), możesz zrobić

from AppKit import NSBeep
NSBeep()

Aby odtworzyć alarm systemowy.

 10
Author: Barry Wark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-29 15:47:05

Próbowałem miksera z modułu pygame i działa dobrze. Najpierw zainstaluj moduł:

$ sudo apt-get install python-pygame

Następnie w programie napisz to:

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

W pygame masz wiele opcji dostosowywania, z którymi możesz dodatkowo eksperymentować.

 7
Author: Abhranil Das,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-24 12:14:54

Musiałem wyłączyć opcję "Silence terminal bell" w moim aktywnym profilu terminala w iTerm, aby print('\a') zadziałało. Wydawało się, że działa dobrze domyślnie w Terminalu.

Możesz również użyć modułu Mac Carbon.Snd, aby odtworzyć sygnał dźwiękowy systemu:

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

Moduły węglowe nie mają żadnej dokumentacji, więc musiałem użyć help(Carbon.Snd), aby zobaczyć, jakie funkcje są dostępne. Wydaje się, że jest to bezpośredni interfejs do Carbon, więc dokumenty na Apple Developer Connection prawdopodobnie pomagają.

 5
Author: markpasc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-17 21:56:10

Bazując na odpowiedzi Barry ' ego Warka... NSBeep() z AppKit działa dobrze, ale również sprawia, że terminal/app ikona w skoku paska zadań. Kilka dodatkowych linii z NSSound() unika tego i daje możliwość użycia innego dźwięku:

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

Standardowe pliki dźwiękowe można znaleźć za pomocą linii poleceń locate /System/Library/Sounds/*.aiff Plik używany przez NSBeep() wydaje się być '/System/Library/Sounds/Funk.aiff'

 1
Author: Martin Müller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-14 09:46:37