#python-3.x #tkinter #text-to-speech #pyttsx3
#python-3.x #tkinter #преобразование текста в речь #pyttsx3
Вопрос:
Итак, я создаю проект с множеством кнопок и окон, используя Tkinter, и я реализовал tts с помощью модуля pyttsx3. Рассмотрим следующий пример:
import pyttsx3
from Tkinter import *
#configure text-to-speech
engine = pyttsx3.init()
def speak(text):
engine.setProperty("rate", 150)
engine.say(text)
engine.runAndWait()
root = Tk()
def submit():
top = Toplevel(root)
hello_world = Label(top, text = "Hello World")
hello_world.pack()
speak("Hello World")
click_me = Button(root, text = "Click Me", command = submit)
click_me.pack()
root.mainloop()
При нажатии кнопки сначала запускается команда tts, и окно будет зависать до тех пор, пока pyttsx3 не закончит говорить, а затем загрузится только окно. А когда приходится говорить много текста, эта проблема усугубляется.
Чего я хочу, так это того, чтобы команда tts выполнялась после загрузки окна. Как мне это сделать?
Комментарии:
1. Вызовите
hello_world.update()
передspeak()
этим.2. Спасибо, это то, что я искал.
Ответ №1:
У меня была точно такая же проблема, я перепробовал все, включая потоки, но метод Root.after(2000, speak) Определенно сработает. Число указано в миллисекундах.