Python/Kivy:使用Enter键提交表单
问题描述:
我正在使用enter
键从一个TextInput
移到另一个TextInput
.
我想使用enter
键从最后一个TextInput
移到Button
.当我再次按Enter键时,应调用root.abc()
函数.
有人可以告诉我该怎么做吗?
I am moving from one TextInput
to another TextInput
using enter
key.
I want to move from last TextInput
to Button
using enter
key .When I press again enter key then should be call root.abc()
function.
Can someone tell me how to done it?
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.core.window import Window
Window.clearcolor = (0.5, 0.5, 0.5, 1)
Window.size = (300, 100)
class User(Screen):
def abc(self):
print('Test')
class Test(App):
def build(self):
return self.root
if __name__ == '__main__':
Test().run()
test.kv
User:
BoxLayout:
orientation: "vertical"
TextInput:
id:test1
focus : True
text: ' '
width: 100
multiline: False
on_text_validate: test2.focus = True
TextInput:
id:test2
text: ' '
width: 100
multiline: False
on_text_validate: test3.focus = True
Button:
id:test3
text: 'Ok'
on_press : root.abc()
答
在这里,我们使用向下键绑定,检查按钮的焦点并按下Enter键.
Here we are using a key down binding, check for button's focus and Enter key pressed.
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.core.window import Window
from kivy.properties import ObjectProperty
Window.clearcolor = (0.5, 0.5, 0.5, 1)
Window.size = (300, 100)
class User(Screen):
test3 = ObjectProperty(None)
def __init__(self, **kwargs):
super(User, self).__init__(**kwargs)
Window.bind(on_key_down=self._on_keyboard_down)
def _on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
if self.test3.focus and keycode == 40: # 40 - Enter key pressed
self.abc()
def abc(self):
print('Test')
class Test(App):
def build(self):
return self.root
if __name__ == '__main__':
Test().run()
test.kv
#:kivy 1.10.0
User:
test3: test3
BoxLayout:
orientation: "vertical"
TextInput:
id:test1
focus : True
text: ' '
width: 100
multiline: False
on_text_validate: test2.focus = True
TextInput:
id:test2
text: ' '
width: 100
multiline: False
on_text_validate:
test3.background_normal = ''
test3.background_color = [0, 0, 1, 0.5] # 50% translucent blue
test3.focus = True
Button:
id:test3
text: 'Ok'
focus: False
on_press : root.abc()
输出
Output