繁体   English   中英

TextInput Kivy 的自动“聚焦”

[英]Automatic 'focus' of TextInput Kivy

我有一个看起来像这样的文本输入小部件:

<ReaderWidget>:
    Label:
        text: 'Please scan EBT card'
        font_size: root.height/8
        size: self.texture_size
        bold: True
        color: 0, 0.70, 0.93, 1
    TextInput:
        focus: True
        password: True
        multiline: False
        cursor: 0, 0

根据用户按下另一个小部件中的按钮,小部件会动态添加到布局中。 目前,用户必须在输入文本之前将鼠标/手指指向文本框,我希望光标在文本框中准备好接收文本,而用户不必通过鼠标按下来指示。 有没有办法做到这一点?

似乎focus : True应该这样做。 但似乎没有。

我知道这很旧,但是当我尝试做一些非常相似的事情时我发现了这个问题。 我添加 TextInput(并设置它的焦点)的代码位于按钮的 on_press 处理程序中。 按下会导致 TextInput 被添加到布局并设置焦点,但是当按钮被释放时它会失去焦点。 将我的代码移动到 on_release 解决了这个问题。

这在 kivy 1.9.0 中对我有用:

def show_keyboard(event):
    text_input.focus = True
Clock.schedule_once(show_keyboard)

如果直接设置 text_input.focus 好像不行。 也许这是kivy的一个错误?

我有同样的问题,但不是按钮,所以 on_release 不是一个选项。 如果你想用 on_touch_down 方法来做,你可以聚焦小部件并添加要忽略的当前触摸以进行聚焦:

def on_touch_down(self, touch):
    self.focus = True
    FocusBehavior.ignored_touch.append(touch)

当然你还需要导入FocusBehavior:

from kivy.uix.behaviors.focus import FocusBehavior

您可以在此处阅读更多信息: https : //kivy.org/doc/stable/api-kivy.uix.behaviors.focus.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM