【问题标题】:Kivy Application is not using VKeyboard when running on deviceKivy 应用程序在设备上运行时未使用 VKeyboard
【发布时间】:2013-08-30 22:48:07
【问题描述】:

我一直在努力解决这个问题。希望比我更了解 kivy/and 或 android 的人能够回答我的问题(kivy 允许您为 android 编译 python 并包含一些不错的 UI 内容)

我创建了自己的 kivy vkeyboard 布局 json 文件,它在带有模拟器的 windows 中运行良好。 但是当我将它安装到设备上时,它从不使用我的自定义键盘。

我认为是因为我没有将 .json 文件放在设备上的正确位置(但我真的不知道)

我的代码在下面

appname.kv

...
<NumericVKeyboard>:
    layout: "numeric"
    size: (700,70)

<more rules>...

然后我在我创建的小部件类中使用它

from kivy.uix.textinput import TextInput
class NumericTextInput(TextInput):
    def on_focus(self, instance, value, *largs):
        win = self.get_root_window()

        if win:
            win.release_all_keyboards()
            win._keyboards = {}

            if value: #User focus; use special keyboard
                win.set_vkeyboard_class(NumericVKeyboard)
                print "NumericVKeyboard:", win._vkeyboard_cls, VKeyboard.layout_path
            else: #User defocus; switch back to standard keyboard
                win.set_vkeyboard_class(VKeyboard)
                print "VKeyboard:", win._vkeyboard_cls, VKeyboard.layout_path

        return TextInput.on_focus(self, instance, value, *largs)

在 Windows 上一切正常,并且正确使用 NumericVKeyboard。但是当我构建 apk 并将其放在设备上时,它只使用默认键盘而不是我的自定义键盘

如果有帮助,这是来自adb logcat的消息

<snip>
I/python  ( 1261): NumericVKeyboard: <class 'base.NumericVKeyboard'> <kivy.properties.StringProperty object at 0x5d4db1f0>

I/LatinIME(  284): InputType.TYPE_NULL is specified

W/LatinIME(  284): Unexpected input class: inputType=0x00000000 imeOptions=0x00000000
</snip>

请帮助...我已经快要写我自己的“键盘”小部件了。但我真的很想用kivy的vkeyboard

【问题讨论】:

    标签: android python kivy


    【解决方案1】:

    嗯,我不知道为什么我花了这么长时间才弄清楚。但诀窍是双重的,事后看来是完全显而易见的......

    我必须将keyboard_mode=dock 添加到 kivy 的 Config.ini 文件中。

    我的资产目录中必须有我的 numeric.json 布局。

    最后也没那么难。由于某种原因,我只是在努力让它工作。

    【讨论】:

      猜你喜欢
      • 2012-07-22
      • 2023-03-14
      • 2014-05-29
      • 1970-01-01
      • 2020-11-27
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多