Kivy:Shift+Tab 不适用于 TextInput
Kivy: Shift+Tab does not work with TextInput
我正在尝试通过按 Shift+Tab 键向后循环我的 TextInputs(我不知道有什么特别的)。我只是不知道如何让它发挥作用。它总是跳转到下一个 TextInput。我在 Google.
中没有找到任何内容
此外,我希望在 focus=True 时选择整个 TextInput.text。也没有让它正常工作。
请帮帮我:-D
顺便说一句,这是我的最小示例:
import kivy
kivy.require('1.11.0')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_string('''
<CustomInput@TextInput>:
text: "Blindtext"
size_hint_y: 0.1
pos_hint: {"center_y": 0.5}
multiline: False
write_tab: False
<Box>:
padding: 20,0,20,0
spacing: 10
CustomInput
CustomInput
CustomInput
''')
class Box(BoxLayout):
pass
class TestApp(App):
def build(self):
return Box()
if __name__ == "__main__":
TestApp().run()
非常感谢!
干杯,
smarwin
用这个 post 解决了它:https://github.com/kivy/kivy/issues/6560
您必须在 focus.py 的 keyboard_on_key_down 方法中将 if ['shift'] == modifiers:
行更改为 if modifiers == {'shift'}:
。您将在 uix/behaviors/.
中的 kivy 文件夹中找到此文件
def keyboard_on_key_down(self, window, keycode, text, modifiers):
if keycode[1] == 'tab': # deal with cycle
if ['shift'] == modifiers:
next = self.get_focus_previous()
else:
next = self.get_focus_next()
if next:
self.focus = False
next.focus = True
return True
return False
不能保证,但到目前为止对我来说效果很好。
干杯,
smarwin
使用 smarwin 的解决方法,删除字符(使用退格键)对我不起作用。
在最终 return False
之前调用 super 为我修复了它。
例如
...
next.focus = True
return True
super().keyboard_on_key_down(window, keycode, text, modifiers)
return False
中有一些关于它的信息
我正在尝试通过按 Shift+Tab 键向后循环我的 TextInputs(我不知道有什么特别的)。我只是不知道如何让它发挥作用。它总是跳转到下一个 TextInput。我在 Google.
中没有找到任何内容此外,我希望在 focus=True 时选择整个 TextInput.text。也没有让它正常工作。
请帮帮我:-D
顺便说一句,这是我的最小示例:
import kivy
kivy.require('1.11.0')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_string('''
<CustomInput@TextInput>:
text: "Blindtext"
size_hint_y: 0.1
pos_hint: {"center_y": 0.5}
multiline: False
write_tab: False
<Box>:
padding: 20,0,20,0
spacing: 10
CustomInput
CustomInput
CustomInput
''')
class Box(BoxLayout):
pass
class TestApp(App):
def build(self):
return Box()
if __name__ == "__main__":
TestApp().run()
非常感谢! 干杯, smarwin
用这个 post 解决了它:https://github.com/kivy/kivy/issues/6560
您必须在 focus.py 的 keyboard_on_key_down 方法中将 if ['shift'] == modifiers:
行更改为 if modifiers == {'shift'}:
。您将在 uix/behaviors/.
def keyboard_on_key_down(self, window, keycode, text, modifiers):
if keycode[1] == 'tab': # deal with cycle
if ['shift'] == modifiers:
next = self.get_focus_previous()
else:
next = self.get_focus_next()
if next:
self.focus = False
next.focus = True
return True
return False
不能保证,但到目前为止对我来说效果很好。 干杯, smarwin
使用 smarwin 的解决方法,删除字符(使用退格键)对我不起作用。
在最终 return False
之前调用 super 为我修复了它。
例如
...
next.focus = True
return True
super().keyboard_on_key_down(window, keycode, text, modifiers)
return False
中有一些关于它的信息