Как очистить ввод текста после выхода из экрана в Киви - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь очистить текст в textinput, но у меня проблема с доступом к свойствам texinput.Я хотел бы очистить текст (entry.text) после того, как я отпущу кнопку Acceppt и покину InputScreen.Я нашел 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)

MainScreen, но я думаю, что это не важно:

<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")

1 Ответ

0 голосов
/ 03 июня 2018

В файле kv используйте событие on_leave или on_pre_leave в InputScreen:, чтобы очистить текст (entry.text).

Управление экраном »API» События

События:

on_pre_leave: ()

Событие сработало, когда экран должен был быть удален: анимация ухода началась.

on_leave: ()

Событие возникает при удалении экрана: анимация завершения завершена.

Фрагменты

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

Примечание * Файл 1025 * kv - ObjectProperty и идентификаторы key_board: key_board Указывает, что ObjectProperty с именем key_board указывает (подключен) на идентификатор KeyBoardGridLayout , key_board . entry Это id и слабый виджет TextInput. entry.text Он ссылается на значение TextInput text . entryText: entry.text entryText является свойством KeyBoardGridLayout.Если виджет не имеет свойства с заданным именем, ObjectProperty будет автоматически создан и добавлен в виджет. entryText присваивается значение entry.text

...