Python 2.7 在python中动态显示文本时,如何在后台播放声音?
我想连续播放嘟嘟声,直到文本在终端上动态显示。这是我的密码Python 2.7 在python中动态显示文本时,如何在后台播放声音?,python-2.7,Python 2.7,我想连续播放嘟嘟声,直到文本在终端上动态显示。这是我的密码 import time import sys import winsound winsound.Beep(1000, 5000) def printf(s): for c in s: sys.stdout.write('%s' % c) sys.stdout.flush() time.sleep(0.0203) printf("Hello I am Jishan Bhat
import time
import sys
import winsound
winsound.Beep(1000, 5000)
def printf(s):
for c in s:
sys.stdout.write('%s' % c)
sys.stdout.flush()
time.sleep(0.0203)
printf("Hello I am Jishan Bhattacharya.")
你需要这样做,但我的测试显示,你不能将它与Beep一起使用。你可以将声音保存为wav文件
winsound.PlaySound(sound, winsound.SND_ASYNC)
您可以创建一个新线程并开始运行它,创建一个bool来停止线程 没有明显的方法可以使用beep并使其动态停止
import threading
class beeper(threading.Thread):
def run(self):
self.keeprunning = True
while self.keeprunning:
winsound.Beep(freq, dur) // make a short dur to make sure it stops soon after printing ends
beep = beeper()
beep.start()
printf(string)
beep.keeprunning = False
这听起来像是多线程,resp multi processing如果第一个线程不工作,您可以将beep作为另一个线程执行,并写入文本,因此它们将并行执行。多线程更简单,但也有可能因为python而无法工作,GIL python无法实际使用线程,只有快速切换执行路径请将“winsound.beep”编辑为“winsound.beep”。我试过你的代码,但问题是,在文本显示完成后,嘟嘟声也会继续。添加了一个stop子句,使持续时间变短,以便验证它是否应该运行你的代码,但这次它会动态打印文本无限次,而且嘟嘟声之间也会发生中断,这似乎很奇怪。