[英]Kivy for Python: Resetting focus after validation or locking focus to a text input field
我正在 Kivy 开发一个待办事项应用程序:我有一个文本输入字段来输入任务。 之后,我按 Enter 确认。 按 Enter 会使用 Kivys 内置的 on-text-validate-Function 提升我的“确认”功能。 此“确认”功能清除输入字段,在下方创建一个按钮,显示任务。 如果按下按钮,它会自行删除。
这是我的问题:按 Enter 验证我的输入后,文本输入字段失去焦点。 我必须单击文本输入字段才能键入第二个任务,这非常不方便。 我希望文本输入字段始终保持焦点。
我试图通过在我的确认函数中包含一个text_input.focus = True
来重置焦点。 这没有用。
我还尝试使用 Kivys 时钟每 0.5 秒调用text_input.focus = True
。 这也不起作用。
通常,我似乎无法通过text_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_validate_unfocus
。 因此,您可以更改MyTextInput
实例的创建以使用此属性:
text_input = MyTextInput(
text ="",
multiline = False,
text_validate_unfocus = False,
on_text_validate = confirm)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.