【问题标题】:Button on Floatlayout is Not working while executing code in kivy在kivy中执行代码时,浮动布局上的按钮不起作用
【发布时间】:2017-09-17 07:00:36
【问题描述】:

我在 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()

当我按下 button1 时,整个布局挂起并且停止按钮不起作用。有人对这个问题有任何想法

【问题讨论】:

    标签: android python cross-platform kivy kivy-language


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多