Kivy 屏幕外的文本输入如何清晰

How clear textinput after out of screen in Kivy

我尝试清除 textinput 中的文本,但在访问 texinput 属性时遇到问题。我想在释放按钮 Acceppt 并离开 InputScreen 后清除文本 (entry.text)。我发现 get_screen() 可以设置属性,但我现在不知道如何将它与 kivy-language

一起使用
ScreenManagement:
    id: screen_manager
    transition: FadeTransition()
    MainScreen:
        id: main_screen
        name: "main"
        manager: screen_manager
        numberSet1: input_screen.number1
        numberSet2: input_screen.number2
        numberSet3: input_screen.number3
    InputScreen:
        id: input_screen
        name: "input"
        manager: screen_manager
        textIdToReturn: main_screen.textName

<InputScreen>:

    NawiButton:
        tempNumber: key_board.entryText
        pos: root.width - 100 - 0.25 * root.width, 10
        text: "Acceppt"
        on_release: root.saveValue(root.textIdToReturn, self.tempNumber)
        background_normal: ''
        background_color: .3, 1, .4, .85

    KeyBoardGridLayout:
        id: key_board
        name: "KeyBoard"

<KeyBoardGridLayout>:
    rows: 5
    padding: [100, 10, 100, 100]
    spacing: 3
    entryText: entry.text

    BoxLayout:
        TextInput:
            id: entry
            font_size: 45
            multiline: False
            on_text: root.update_padding(args[0])
            padding_x: self.width/2


    BoxLayout:
        spacing: 3
        KeyBoardButton:
            text: "1"
            on_press: entry.text = root.addText(entry.text, self.text)
        KeyBoardButton:
            text: "2"
            on_press: entry.text = root.addText(entry.text, self.text)
        KeyBoardButton:
            text: "3"
            on_press: entry.text = root.addText(entry.text, self.text)

MainScreenclass,不过我觉得不重要:

<MainScreen>:
        BoxLayout:
            orientation: "vertical"
            spacing: 50
            padding: [300, 50, 300, 50]

            Button:
                text: root.numberSet1
                id: textNum1
                name: textNum1
                font_size: 45
                on_release:
                    root.touch("textNum1")

在 kv 文件中,在 InputScreen: 处使用 on_leaveon_pre_leave 事件来清除文本 (entry.text)。

Screen Manage » API » Events

Events:

on_pre_leave: ()

    Event fired when the screen is about to be removed: the leaving animation is started.

on_leave: ()

    Event fired when the screen is removed: the leaving animation is finished.

片段

ScreenManagement:
    id: screen_manager
    transition: FadeTransition()
    MainScreen:
        id: main_screen
        name: "main"
        manager: screen_manager
        numberSet1: input_screen.number1
        numberSet2: input_screen.number2
        numberSet3: input_screen.number3
    InputScreen:
        id: input_screen
        name: "input"
        manager: screen_manager
        textIdToReturn: main_screen.textName

        on_leave:
            root.ids.input_screen.key_board.ids.entry.text = ''
...

<InputScreen>:
    key_board: key_board

备注

kv 文件 - ObjectProperty 和 id

key_board: key_board

表示名为 key_boardObjectProperty 指向(连接)到 KeyBoardGridLayout的id, key_board.

entry

它是一个 id 和 TextInput 小部件的弱引用。

entry.text

它引用了 TextInputtext 的值。

entryText: entry.text

entryText 是 KeyBoardGridLayout 的 属性。如果小部件没有具有给定名称的 属性,则会自动创建一个 ObjectProperty 并将其添加到小部件。 entryText 赋值为 entry.text