Вопрос:

Звук Питона («Колокол»)

python macos audio terminal

55567 просмотра

5 ответа

7124 Репутация автора

Я хотел бы, чтобы программа на python предупредила меня, когда она выполнила свою задачу, издав звуковой сигнал. В настоящее время я использую import osи затем использую речевую программу командной строки, чтобы сказать «Процесс завершен». Мне бы очень хотелось, чтобы это был простой «колокол».

Я знаю, что есть функция, которая может использоваться в приложениях КакаоNSBeep , но я не думаю, что это как-то связано с этим.

Я также пытался

print('\a')

но это не сработало.

Я использую Mac, если вы не можете сказать по моему комментарию Какао , так что это может помочь.

Автор: stalepretzel Источник Размещён: 17.08.2008 09:33

Ответы (5)


69 плюса

6287 Репутация автора

Решение

Ты пробовала :

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

Это работает для меня здесь, в Mac OS 10.5

На самом деле, я думаю, что ваша оригинальная попытка работает с небольшой модификацией:

print('\a')

(Вам просто нужны одинарные кавычки вокруг последовательности символов).

Автор: gbc Размещён: 17.08.2008 09:46

5 плюса

833 Репутация автора

Мне пришлось отключить опцию «Silence Terminal Bell» в моем активном профиле терминала в iTerm, print('\a')чтобы работать. Похоже, что по умолчанию работает в терминале.

Вы также можете использовать модуль Mac Carbon.Sndдля воспроизведения системного гудка:

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

Модули Carbon не имеют никакой документации, поэтому мне пришлось использовать, help(Carbon.Snd)чтобы увидеть, какие функции были доступны. Похоже, это прямой интерфейс к Carbon, поэтому, вероятно, помогут документы по Apple Developer Connection.

Автор: markpasc Размещён: 17.08.2008 09:56

10 плюса

102141 Репутация автора

Если у вас установлен PyObjC (мост Python - Objective-C) или вы работаете на системном питоне OS X 10.5 (который поставляется с PyObjC), вы можете сделать

from AppKit import NSBeep
NSBeep()

воспроизвести системное оповещение.

Автор: Barry Wark Размещён: 29.08.2008 03:47

9 плюса

3829 Репутация автора

Я попробовал микшер из модуля pygame, и он работает нормально. Сначала установите модуль:

$ sudo apt-get install python-pygame

Затем в программе напишите это:

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

С pygame у вас есть много вариантов настройки, с которыми вы можете дополнительно поэкспериментировать.

Автор: Abhranil Das Размещён: 24.05.2011 12:14

2 плюса

21 Репутация автора

Опираясь на ответ Барри Уорка ... NSBeep()из AppKit, он отлично работает, но также заставляет прыгать значок терминала / приложения на панели задач. Несколько лишних строк NSSound()позволяют избежать этого и дают возможность использовать другой звук:

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

Стандартные звуковые файлы могут быть найдены с помощью командной строки locate /System/Library/Sounds/*.aiff Файл , используемый , как NSBeep()представляется,'/System/Library/Sounds/Funk.aiff'

Автор: Martin Müller Размещён: 14.10.2017 09:37
Вопросы из категории :
32x32