在 Kivy 中执行时如何阻止 Enter 键向下移动?

问题描述 投票:0回答:2

我是 Kivy 新手,但我认为我已成功获得 Enter 键以链接到我的 Kivy iOS 应用程序中的应用内“转到”按钮。用户通常会输入所需的文本,然后为了保存敲击键盘并点击“开始”,他们只需按回车键即可。这很好用。

问题是,在按 Enter 键后的一瞬间(仍在该屏幕上),您可以看到在文本输入字段中,光标向下移动了一行。所以回车键有两个功能,下一行和链接到“go”。

如何阻止回车键向下移动并使其仅激活“执行”按钮?

我已经搜索了 Kivy 文档并搜索了很多,但找不到太多帮助。我将包含我的函数,该函数显示链接到我的“go”按钮的回车键(这实际上是我的

strip_taf_button
)。这是在我的 main.py 和我的 MainApp 类中。

def __init__(self, **kwargs):
    super(MainApp, self).__init__(**kwargs)
    Window.bind(on_key_down=self._on_keyboard_down)

def _on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
    screen_manager = self.root.ids['screen_manager']
    if screen_manager.current == 'home_screen' and keycode == 40:
        strip_taf_button = self.root.ids["home_screen"].ids["strip_taf_button"]
        strip_taf_button.trigger_action(0)

因此,在这里,它表示如果用户位于

home_screen
上并且按下 Enter 键,则会链接到并触发
strip_taf_button

同样关于这个问题,在按下回车键后,即使屏幕几乎立即发生变化,软键盘也会保持打开状态,直到我按下它。如何让软键盘在按回车键后消失?对不起,我不太擅长猕猴桃。

任何帮助将不胜感激,谢谢。

python button keyboard kivy
2个回答
1
投票

您可以在

multiline: False
小部件中添加此参数:
TextInput
,以阻止它使光标向下移动一行


0
投票

具有

Clock.schedule_once
的解决方案对我有用。

如果按 Enter 键,请清除 InputField 并设置 multiline = False。然后使用 Clock.schedule_once 调用函数:

self.ids._message.text = ''
self.ids._message.multiline = False
Clock.schedule_once(self.set_message_focus, .1)

在函数

set_message_focus
中将TextInput设置回多行并给它一个焦点:

def set_message_focus(self, *args):
    self.ids._message.multiline = True
    self.ids._message.focus = True
© www.soinside.com 2019 - 2024. All rights reserved.