问题
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?
test.py
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()
回答1:
Here we are using a key down binding, check for button's focus and Enter key pressed.
Example
main.py
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
来源:https://stackoverflow.com/questions/49727988/python-kivy-form-submit-using-enter-key