Vra

Ek wil graag 'n luislang program waarsku my wanneer dit sy taak voltooi het deur 'n beep geluid. Op die oomblik is ek gebruik import os en gebruik dan 'n command line toespraak program om te sê "proses te voltooi." Ek veel eerder is dit 'n eenvoudige "klok."

Ek weet dat daar is 'n funksie wat gebruik kan word in Cocoa programme, NSBeep, maar ek dink nie dit het veel om iets te doen met hierdie.

Ek het ook probeer

print('\a')

maar dit het nie gewerk nie.

Ek is met behulp van 'n Mac, as jy nie kan vertel deur my Cocoa opmerking, so wat kan help.

Was dit nuttig?

Oplossing

Het jy al probeer:

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

Dit werk vir my hier op 'n Mac OS 10.5

Eintlik, dink ek jou oorspronklike poging werk ook met 'n bietjie verandering:

print('\a')

(Jy die enkele aanhalingstekens rondom die karakter volgorde hoef net).

Ander wenke

As jy PyObjC (die Python - Objective-C brug) geïnstalleer of loop op OS X 10.5 se stelsel luislang (wat skepe met PyObjC), wat jy kan doen

from AppKit import NSBeep
NSBeep()

om die stelsel waarskuwing speel.

Ek het probeer om die menger van die pygame module, en dit werk goed. installeer eers die module:

$ sudo apt-get install python-pygame

Toe ek in die program, skryf hierdie:

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

Met pygame het jy 'n baie aanpassing opsies, wat jy ook nog kan eksperimenteer met.

Ek het die opsie "Silence terminale klok" om te draai af in my aktiewe Terminal profiel in iTerm vir print('\a') te werk. Dit het gelyk of fyn te werk by verstek in Terminal.

Jy kan ook gebruik maak van die Mac module Carbon.Snd om die stelsel biep speel:

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

Die Carbon modules nie enige dokumentasie, so ek moes help(Carbon.Snd) gebruik om te sien wat funksies beskikbaar was. Dit lyk na 'n direkte koppelvlak op koolstof, sodat die dokumente op Apple Developer Connection waarskynlik help.

Building op antwoord Barry Wark se ... NSBeep() van AppKit werk goed, maar maak ook die terminale / app ikoon in die taakbalk spring. 'N Paar ekstra lyne met NSSound() vermy wat en gee die geleentheid om 'n ander klank te gebruik:

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

Standard klank lêers kan gevind word via instruksies locate /System/Library/Sounds/*.aiff Die lêer wat gebruik word deur NSBeep() blyk te wees '/System/Library/Sounds/Funk.aiff'

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top