我可以通过按键盘上的Enter按钮从一个TextBox移动到另一个TextBox吗?

时间:2017-12-04 06:54:52

标签: python python-3.x python-2.7 kivy kivy-language

我有两个文件test.pytest.kv

我想通过按Enter键从一个TextBox移动到另一个TextBox。如何实现这一目标?

test.py

from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.properties import ObjectProperty

Window.size = (500, 330)

class TestScreen(Screen):
    popup = ObjectProperty(None)


class Test(App):
    def build(self):
        self.root = Builder.load_file('test.kv')
        return self.root


if __name__ == '__main__':
    Test().run()

test.kv

#:kivy 1.10.0
TestScreen:

    GridLayout:
        cols: 2
        padding : 30,30
        spacing: 10, 10
        row_default_height: '40dp'

        Label:
            text: 'Name'

        TextInput:
            id: name

        Label:
            text: 'Class'

        TextInput:
            id: clas


        Button:
            text: 'Ok'

        Button:
            text: 'Cancel'

1 个答案:

答案 0 :(得分:1)

由于您想使用 Enter 更改焦点,我想您不需要多行texinput。因此,一个选项是使用on_text_validate事件:

  

<强> on_text_validate
  当用户点击“输入”时,仅在multiline = False模式下触发。这也将使文本输入无法聚焦。

在您的kv文件中,您可以执行以下操作:

#:kivy 1.10.0
TestScreen:

    GridLayout:
        cols: 2
        padding : 30,30
        spacing: 10, 10
        row_default_height: '40dp'

        Label:
            text: 'Name'

        TextInput:
            id: name
            multiline: False
            on_text_validate: clas.focus = True   # <<<<<<<<<<<

        Label:
            text: 'Class'

        TextInput:
            id: clas
            multiline: False

        Button:
            text: 'Ok'

        Button:
            text: 'Cancel'