微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将pyttsx3与tkinter一起使用会导致程序停止和关闭,有什么想法吗?

如何解决将pyttsx3与tkinter一起使用会导致程序停止和关闭,有什么想法吗?

我安装了pyttsx3库以将文本转换为语音。在我想将其与tkinter结合使用之前,它的效果非常好。程序关闭后会发生什么,而没有任何错误或如此。很奇怪,它遍历了engine.runAndWait()之后的代码。我通过在终端显示的每一行之后放置一个打印命令来进行检查,但是我“忽略”了应该在窗口中构建的小部件。有任何想法吗?我正在使用MacOs Mojave 10.14.6。使用Python 3.8.5。

这是有问题的部分代码,您显然可以忽略它们之间的打印命令。我只剩下它了,因此可以看到它遍历了代码,但是只执行了打印命令,而忽略了其余部分。同样,如果没有tkinter,它也可以正常工作;当我不使用pyttsx3库时,该程序也可以正常工作。这是完整的代码https://www.codepile.net/pile/rezzJ7ex及其附带的JSON文件https://www.codepile.net/pile/ePlYvbZM

 else:
        random.shuffle(WORDS)
        for widget in window.winfo_children():
            widget.destroy()
        WORD = WORDS[0]
        tk.Label (window,image=photo1,bg="black") .grid(row=0,column=0)
        word = tk.Label (window,text = WORD,bg="black",fg="white",font="none 20 bold")
        word.grid(row=1,column=0)
        window.update()
        engine = pyttsx3.init()
        nl_voice_id = "com.apple.speech.synthesis.voice.ellen"
        engine.setProperty('rate',100)
        engine.setProperty('voice',nl_voice_id)
        engine.say(WORD)
        engine.runAndWait()
        #del engine <this did not work
        print("after runAndWait")
        window.after(3000)
        print("after after")
        word['text'] = ''
        print("after text")
        window.update()
        print("after update")
        ANSWER = tk.Entry(window,width=20,bg="white")
        print("after entry")
        ANSWER.grid(row=2,column=0)
        print("after ANSWER")
        tk.Button(window,text="Check",width=6,command=lambda: check(ANSWER,WORD)) .grid(row=3,column=0)
        print("after button")
        WORDS.remove(WORD)
        print("after remove")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。