系统说话时如何关闭tkinter窗口?

时间:2019-07-20 02:26:08

标签: python tkinter

我使用tkinter和pyttsx3模块制作了一个ChatBot,然后当我在其中进行复杂的计算时,它不停地讲了整个150位数以上的数字,然后由于冻结,我什至无法关闭tkinter窗口。请帮忙!

我尝试在超过限制但没有任何反应的情况下停止该过程!

engine = pyttsx3.init('sapi5')

voices = engine.getProperty('voices')
engine.setProperty('voice', voices[len(voices) - 1].id)

def speak(audio):
    engine.say(audio)
    engine.runAndWait

speak(eval(12345**120))

我想在说话时说,如果我不想听,应该单击退出窗口将其关闭

1 个答案:

答案 0 :(得分:0)

音频过程或任何其他漫长的过程将阻塞tkinter的主线程。您需要subprocessthread的语音通话功能。

例如:

from threading import Thread

...

def speak(audio):
    engine.say(audio)
    engine.runAndWait

t = Thread(target=speak,args=(12345**120,)
t.start()