python中如果要多次输入文本_python - Python Kivy:忽略文本输入中的键盘快捷键 - 堆栈内存溢出...

如何忽略文本输入中的某些键盘快捷键?

我想要键盘快捷键,例如“ ctrl +”,“ ctrl-”,并且希望它们在“文本输入”中正常工作。

也就是说,如果我专注于“文本输入”窗口小部件,并且在键盘上按了两个键(“控制”和“ +”)的组合,则我不希望将“ +”添加到文本中。

我尝试执行以下操作:

from kivy.app import App

from kivy.lang import Builder

from kivy.uix.textinput import TextInput

KV = """

BoxLayout

MyTextInput

:

font_size: 24

text: 'This is my text input'

"""

class MyTextInput(TextInput):

def __init__(self, **kwargs):

super(MyTextInput, self).__init__(**kwargs)

self.ctrl_down = False

def is_ctrl(self,keycode):

if keycode[0] == 306 or keycode[0] == 305: return True

return False

def keyboard_on_key_down(self, window, keycode, text, modifiers):

if self.is_ctrl(keycode):

self.ctrl_down = True

return super(MyTextInput, self).keyboard_on_key_down(

window, keycode, text, modifiers)

def keyboard_on_key_up(self, window, keycode):

if self.is_ctrl(keycode):

self.ctrl_down = False

return super(MyTextInput, self).keyboard_on_key_up(

window, keycode)

def insert_text(self, substring, from_undo=False):

if self.ctrl_down and substring=='+' or substring=='-':

return

return super(MyTextInput, self).insert_text(substring, from_undo=from_undo)

class MyApp(App):

def build(self):

self.root = Builder.load_string(KV)

MyApp().run()

在这里,基本上所有的东西都起作用,也就是说,简单地忽略了“ control +”和“ control-”的组合。 问题是,如果在文本输入窗口中有选定的文本,则该选定的文本将被删除。

目前,我还没有弄清楚如何解决它。

有更好的解决方案吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值