在 kivy 中执行代码时,Floatlayout 上的按钮不起作用
Button on Floatlayout is Not working while executing code in kivy
我在浮动布局上有两个按钮都有 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 时,整个布局挂起并停止按钮不起作用。有人对这个问题有任何想法
这是因为 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()
我在浮动布局上有两个按钮都有 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 时,整个布局挂起并停止按钮不起作用。有人对这个问题有任何想法
这是因为 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()