Я использую python-2.7
и kivy
. Когда я запускаю test.py
, тогда отображается форма с 2 TextInput
.Я перехожу из одного TextInput в другой TextInput с помощью клавиши Enter
. Когда я не заполняю оба поля TextInput
и перехожу с помощью клавиши ввода. После этого я нажимаю кнопку focused
ok
и нажимаю клавишу Enter
, затем я вызываюinsert
и убедитесь, что оно пустое или нет. Если оно пустое, тогда я устанавливаю focus
на Name
TextInput с помощью этой функции.
def insert(self):
if self.name.text == "":
self.name.focus = True
После фокуса name
TextInput вызывает root.on_enter_text_input()
по умолчанию. Так что переходите к следующему TextInput
. Но я хочу сосредоточиться на name
TextInput.Может кто-нибудь сказать мне, как остановить функцию root.on_enter_text_input()
в это время, когда я вызываю функцию insert
?[! [введите описание изображения здесь] [1]] [1]
test.py
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty, ObjectProperty
from kivy.clock import Clock
Window.clearcolor = (0.5, 0.5, 0.5, 1)
Window.size = (500, 300)
class User(Screen):
name = ObjectProperty(None)
class1 = ObjectProperty(None)
#cls = ObjectProperty(None)
def __init__(self, **kwargs):
super(User, self).__init__(**kwargs)
Window.bind(on_key_down=self._on_keyboard_down)
Clock.schedule_once(self.name_focus, 1)
def name_focus(self, *args):
self.name.focus = True
def on_enter_text_input(self):
self.class1.focus = True
def on_enter_text_input1(self):
self.postUser.focus = True
self.postUser.background_color = [0.5, 0.5, 0.5, 1]
def _on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
if (hasattr(self.postUser, 'focus') and self.postUser.focus) and keycode == 40: # 40 - Enter key pressed
self.postUser.focus = False
self.postUser.background_color = [0, 0, 1, 0.5]
self.insert()
def insert(self):
if self.name.text == "":
self.name.focus = True
class Test(App):
def build(self):
return self.root
if __name__ == '__main__':
Test().run()
test.kv
#:kivy 1.10.0
User:
name: name
class1:class1
postUser : postUser
BoxLayout:
orientation: "vertical"
GridLayout:
cols: 2
padding: 20, 20
spacing: 10, 10
Label:
text: "Name"
text_size: self.size
valign: 'middle'
TextInput:
id:name
multiline: False
text_size: self.size
on_text_validate: root.on_enter_text_input()
Label:
text: "Class"
text_size: self.size
valign: 'middle'
TextInput:
id:class1
multiline: False
text_size: self.size
on_text_validate: root.on_enter_text_input1()
GridLayout:
cols: 2
padding: 0, 0
spacing: 5, 0
size_hint: .5, .35
pos_hint: {'x': .25, 'y': 0}
Button:
id:postUser
size_hint_x: .5
text: "Ok"
focus: False
on_release:
root.insert()
root.dismiss()