Kivy Textinput 未在 Windows 上检测到物理键盘

Posted

技术标签:

【中文标题】Kivy Textinput 未在 Windows 上检测到物理键盘【英文标题】:Kivy Textinput not detecting physical keyboard on Windows 【发布时间】:2021-06-08 18:30:48 【问题描述】:

我正在尝试使用带有 Textinput 的 Kivy 和 Python 3.7 设计一个简单的应用程序。我设法使用textinput.keyboard_mode="managed" 隐藏了虚拟键盘。但是,在物理键盘上键入时,尽管我已将键盘设置为系统 Config.set('kivy', 'keyboard_mode', 'system'),但焦点文本框中没有显示任何文本。程序如下

from kivymd.app import MDApp
from kivymd.uix.screen import Screen
from kivymd.uix.list import OneLineListItem, MDList
from kivymd.uix.list import OneLineIconListItem, IconLeftWidget
from kivy.uix.scrollview import ScrollView
from kivymd.uix.toolbar import MDToolbar
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.textinput import TextInput
from kivy.core.window import Window
from kivy.config import Config
Window.size = (1920, 1080)
Window.fullscreen = True
Config.set('kivy', 'keyboard_mode', 'system')

class StudentApp(MDApp):

    def build(self):
        screen = Screen()
        superBox = BoxLayout(orientation ='vertical')
        toolbar=MDToolbar(title="Student Call List", anchor_title= "center" )
        toolbar.md_bg_color=[0.5, 0, 1, 1]
        superBox.add_widget(toolbar)
        # Creating a Simple List
        textfield=TextInput()
        textfield.keyboard_mode="managed"
        textfield.use_handles=True
        superBox.add_widget(textfield)
        scroll = ScrollView()
        list_view = MDList()
        
        for i in range(5):
            icons = IconLeftWidget(icon="android")
            items = OneLineIconListItem(text=str(i) + ' item')
            items.add_widget(icons)
            list_view.add_widget(items)
            
        scroll.add_widget(list_view)
        # End List
        superBox.add_widget(scroll)
        screen.add_widget(superBox)
        return screen
    
  
StudentApp().run()

【问题讨论】:

【参考方案1】:

keyboard_mode="managed" 需要手动设置键盘可见性,或者调用辅助函数show_keyboard()hide_keyboard()

您可以删除此行 - textfield.keyboard_mode = "managed" 或在其后添加 textfield.show_keyboard()。 https://kivy.org/doc/stable/api-kivy.uix.behaviors.html#kivy.uix.behaviors.FocusBehavior.keyboard_mode

【讨论】:

以上是关于Kivy Textinput 未在 Windows 上检测到物理键盘的主要内容,如果未能解决你的问题,请参考以下文章

Kivy:如何在 kivy 中制作圆角 TextInput?

Kivy:如何摆脱 TextInput 中奇怪的阴影外观?

Kivy:Shift+Tab 不适用于 TextInput

Python/Kivy:使用回车键将一个 TextInput 聚焦到另一个 TextInput

将 kivy 的 TextInput 限制为仅 ascii 字符

单击“TextInput”对象后在 Kivy 中重新获得键盘焦点