python - Kivy for Python:验证后重置焦点或将焦点锁定到文本输入字段
问题描述
我正在 Kivy 中开发一个待办事项应用程序:我有一个文本输入字段可以输入任务。之后,我用 Enter 确认。按 Enter 会使用 Kivys 内置的文本验证功能提高我的“确认”功能。此“确认”- 功能清除输入字段,在下方创建一个按钮,显示任务。如果按钮被按下,它会自行删除。
这是我的问题:通过按 Enter 验证我的输入后,文本输入字段失去焦点。我必须单击文本输入字段才能键入第二个任务,这很不方便。我希望文本输入字段始终保持焦点。
我试图通过text_input.focus = True
在我的确认功能中包含一个来重置焦点。这没有用。
我还尝试使用 Kivys 时钟text_input.focus = True
每 0.5 秒调用一次。这也不起作用。
一般来说,我似乎无法通过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)
推荐阅读
- amazon-web-services - 在 Redshift Spectrum 中选择带有连字符的字段
- delphi - 如何在同一备忘录行列出银行的查询?
- python - 如何使用python列出sharepoint文件夹中的所有文件
- android - 如何在 Android Kotlin 上正确添加片段?
- sql-server - Ejabberd 推荐用于 ODBC 连接 Ms SQL server 的 linux 库
- c# - EF Core 3.1 向导航器添加唯一约束
- wordpress - 在 WordPress 中集成 Bootstrap 轮播
- google-bigquery - BigQuery - 相关子查询取消嵌套数组不起作用
- python - 如何使用 Python 按类别查找给定数据的 MTD(本月至今)
- sql - 如果特定列上有重复值,我如何只能“选择”(不聚合)一行?