我在floatlayout上有两个按钮,它们都有on_press()事件
Button:
id: button1
size_hint: .12,.12
pos_hint:{"center_x":.30,"center_y":.065}
on_press: root.speeak(textbox2.text)
Button:
id: button2
size_hint: .12,.12
#pos_hint:{"center_x":.50,"center_y":.065}
on_press: root.stop()
按钮背后的方法
def speeak(self,texts):
self.texts = texts
global speak
speak = wincl.Dispatch("SAPI.SpVoice")
speak.Speak(self.texts)
def stop(self,*args):
speak.Pause()
当我按下按钮1整个布局挂起和停止按钮不起作用。有人对此问题有任何想法
答案 0 :(得分:0)
这是因为代码会在speak.Speak(self.texts)
处阻止,并且您无法暂停或执行任何操作,直到该行完成为止。解决此问题的一种方法是使用multithreading
并使用线程运行speak.Speak(self.texts)
,这样您的主循环就不会受到影响。以下是您可以开始的示例:
import threading
def speeak(self, texts):
self.texts = texts
self.speak = wincl.Dispatch("SAPI.SpVoice")
t = threading.Thread(target=self.speakStart, args=(self.texts,))
t.daemon = True
t.start()
def speakStart(self, text):
self.speak.Speak(text)
def stop(self):
self.speak.Pause()