Kivy for Python:验证后重置焦点或将焦点锁定到文本输入字段

Kivy for Python:验证后重置焦点或将焦点锁定到文本输入字段,python,kivy,focus,Python,Kivy,Focus,我正在Kivy中开发一个待办事项应用程序:我有一个文本输入字段来输入任务。之后,我用回车确认。按Enter键将使用Kivys内置的文本验证功能启动我的“确认”功能。此“确认”功能清除输入字段,并在下面创建一个按钮,显示任务。如果按下该按钮,它将删除自身 我的问题是: 按Enter键验证输入后,文本输入字段失去焦点。我必须点击文本输入字段才能输入第二个任务,这很不方便。 我希望文本输入字段始终保持焦点 我试图通过在确认功能中包含text\u input.focus=True来重置焦点。这不起作用

我正在Kivy中开发一个待办事项应用程序:我有一个文本输入字段来输入任务。之后,我用回车确认。按Enter键将使用Kivys内置的文本验证功能启动我的“确认”功能。此“确认”功能清除输入字段,并在下面创建一个按钮,显示任务。如果按下该按钮,它将删除自身

我的问题是: 按Enter键验证输入后,文本输入字段失去焦点。我必须点击文本输入字段才能输入第二个任务,这很不方便。 我希望文本输入字段始终保持焦点

我试图通过在确认功能中包含
text\u input.focus=True
来重置焦点。这不起作用

我还尝试使用Kivys时钟每隔0.5秒调用
text\u input.focus=True
。这也不管用

通常,我似乎无法通过
text\u input.focus=True
设置焦点

我很想找到解决这两个问题的办法

  • 验证我的输入或设置时,将焦点重置为我的文本输入字段
  • 将焦点锁定到我的文本输入字段
  • 我将在下面提供我的代码。谢谢大家!

    import kivy      
    
    kivy.require('1.9.0')  
    
    from kivy.app import App  
    from kivy.uix.label import Label
    from kivy.uix.button import Button  
    from kivy.uix.textinput import TextInput 
    from kivy.uix.gridlayout import GridLayout
    
    class MyTextInput(TextInput):
        def on_parent(self, widget, parent):
            self.focus = True
    
    # Create the App class 
    class TutorialApp(App): 
          
        def build(self):
            def confirm(self):
                todo_element = Button(
                    text = text_input.text,
                    on_press = remove)
                grid.add_widget(todo_element)
                text_input.text = ""
                #text_input.focus = True
    
            def remove(self):
                self.parent.remove_widget(self)
    
            grid = GridLayout(
                cols = 1,
                row_default_height = 30,
                row_force_default = True)
    
            text_input = MyTextInput(
                text ="",
                multiline = False,
                on_text_validate = confirm)
    
            grid.add_widget(text_input)
    
            return grid
                
    # Run the App 
    if __name__ == "__main__": 
        TutorialApp().run() 
    

    TextInput
    的一个属性,它满足您的需要。看。属性为
    text\u validate\u unfocus
    。因此,您可以更改
    MyTextInput
    实例的创建以使用此属性:

        text_input = MyTextInput(
            text ="",
            multiline = False,
            text_validate_unfocus = False,
            on_text_validate = confirm)
    

    非常感谢。不知怎么的,我没找到。