首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kivy -如何从有/没有修饰符的按键中获得正确的字符?

Kivy -如何从有/没有修饰符的按键中获得正确的字符?
EN

Stack Overflow用户
提问于 2016-02-27 20:25:12
回答 1查看 781关注 0票数 1

在Python中使用Kivy时,如何从带/不带修饰符的按键中获得正确的字符?

我不想使用kivy.uix.textinput.TextInput。我只想知道用户尝试输入的是什么字符。

我可以使用从kivy.core.window.Window.request_keyboard()返回的键盘来获取当前按下的键的扫描码,但这不包括修饰符,即shift键。

显然,我可以自己编写一些代码来检查是否同时按下了shift,如果是,则将其转换为相应的字符。但是,除非每个人的键盘布局都和我的一样,否则这个解决方案是不能移植的。

有没有办法根据系统的快捷键映射来获得正确的字符?

我快速查看了一下TextInput source,但没有看到任何对request_keyboard()的调用。

不要告诉我使用TextInput。

EN

回答 1

Stack Overflow用户

发布于 2016-11-15 17:43:38

下面是一个工作示例,说明如何处理修改后的字符。我知道这不是正确的解决方案,但它是有效的。如果你知道正确的方法,请在下面张贴…

代码:

代码语言:javascript
运行
复制
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import StringProperty
from kivy.core.window import Window, Keyboard
from kivy.logger import Logger

class textInsert(FloatLayout):
    def __init__(self, **kwargs):
        super(textInsert, self).__init__(**kwargs)
        self.super = []

        text = StringProperty()

        ########################################
        keyboard = Window.request_keyboard(self._keyboard_released, self)
        keyboard.bind(on_key_down=self._keyboard_on_key_down, on_key_up=self._keyboard_released)

        ########################################
    #end def __init__

    def _keyboard_released(self, window, keycode):
        self.super = []

    def _keyboard_on_key_down(self, window, keycode, text, super):
        if 'lctrl' in self.super and keycode[1] == 's':
            Logger.info("Item saved, {}".format(self.super))
            self.super = []
            return False
        elif 'lctrl' not in self.super and keycode[1] in ["lctrl"]:
            self.super.append(keycode[1])
            return False
        else:
            Logger.info("key {} pressed.".format(keycode))
            return False


class ROOT(App):
   def build(self):
      return textInsert()

if __name__ == '__main__':
   ROOT().run()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35669747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档