如何让 kivy Window.softinput_mode = 'below_target' 将 TextInput 框移动到虚拟键盘上方?

Posted

技术标签:

【中文标题】如何让 kivy Window.softinput_mode = \'below_target\' 将 TextInput 框移动到虚拟键盘上方?【英文标题】:How do I get the kivy Window.softinput_mode = 'below_target' to move the TextInput box above the virtual keyboard?如何让 kivy Window.softinput_mode = 'below_target' 将 TextInput 框移动到虚拟键盘上方? 【发布时间】:2021-04-27 00:43:25 【问题描述】:

我正在使用 python 3.8.6 和 kivy 2.1.0。

当文本输入框获得焦点时,键盘弹出并覆盖文本输入框。我在下面添加了 2 行以强制键盘位于目标 TextInput 框下方,但它没有按预期工作。

Window.keyboard_anim_args = "d":.2,"t":"linear"
Window.softinput_mode = "below_target"

我也尝试过“平移”和“调整大小”。代码运行没有错误,但这些设置都没有对行为产生任何影响,所以我确定我遗漏了一些明显的东西,但对我来说并不明显:-(。非常感谢任何帮助。完整的代码如下:

from kivy.app import App
from kivy.core.window import Window
from kivy.uix.button import  Button
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.config import Config

Window.keyboard_anim_args = "d":.2,"t":"linear"
Window.softinput_mode = "below_target"
#Window.softinput_mode = 'pan'
#Window.softinput_mode = 'resize'

class ClearApp(App):
    def build(self):
        self.box = BoxLayout(orientation='horizontal', spacing=10)
        self.txt = TextInput(hint_text='Write here', 
                             keyboard_mode='auto', 
                             size_hint=(.5,.1))
        self.btn = Button(text='Clear All', 
                          on_press=self.clearText, size_hint=(.1,.1))
        self.box.add_widget(self.txt)
        self.box.add_widget(self.btn)
        return self.box
    def clearText(self, instance):
        self.txt.text = ''
'''
if Config:
    _is_desktop = Config.getboolean('kivy', 'desktop')
    _keyboard_mode = Config.get('kivy', 'keyboard_mode')
    if _is_desktop:
        Config.set('kivy', 'keyboard_mode','system')
        Config.write()
    else:
        Config.set('kivy', 'keyboard_mode','systemanddock')
        Config.write()    
'''        
Config.set('kivy', 'keyboard_mode','dock')
Config.write()        

ClearApp().run()

【问题讨论】:

【参考方案1】:

在导入 App 之前使用 import Config 这可以帮助您集中注意力并在 UI 中显示您的键盘 例如。

from kivy.config import Config
from kivy.app import App

在您的代码中使用这些行

【讨论】:

以上是关于如何让 kivy Window.softinput_mode = 'below_target' 将 TextInput 框移动到虚拟键盘上方?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Kivy 1.9.1 或 1.9.2 在 OSX 10.12.2 上使用 SDL2 而不是 pygame?

Pycharm、virtualenv 和 kivy 设置

如何在 Kivy 中实现社交分享按钮

如何授予 Kivy android 脚本的权限?

Kivy - 如何在激活时将功能绑定到复选框

Kivy TextInput 如何从右侧开始输入