Очистка inputText с помощью кнопки отпускания в Kivy - PullRequest
0 голосов
/ 03 октября 2018

Давайте представим, что у нас есть форма, в которой человек написал кое-что на входах, но мне нужно очистить их все, как бы я это сделал в Киви?

Я пробовал это, но это не сработало:

main.py:

class CreateUra(GridLayout):

    def clear_inputs(self, *args):
            for item in args:
                item = ''


class UraApp(App):

    def build(self):
        return CreateUra()

if __name__ == "__main__":
    UraApp().run()

Ura.kv:

<CreateUra>:
    cols: 1
    padding: 10
    spacing: 10
    row_force_default: True
    row_default_height: '32dp'

      BoxLayout:
            Label: 
                text: 'Contexto:'
                TextInput: 
                hint_text: "Contexto da ura"
                focus: True
                multiline: False
                cursor_color: (0, 0, 0, 0.8)
                id: context_input

        BoxLayout:
            Label: 
                text: 'Nome da ura:'
                TextInput: 
                hint_text: "Nome do arquivo da ura"
                multiline: False
                cursor_color: (0, 0, 0, 0.8)
                id: ura_file_name

        Button:
            text: 'Create Ura'
            id: bt_create
            on_press: root.uraConfig()
            on_release: root.clear_inputs(context_input.text, ura_file_name.text)

* Игнорировать uraConfig для on_press

Я попробовал этот способ, и онработал:

Button:
    text: 'Create Ura'
    id: bt_create
    on_press: root.uraConfig()
    on_release: context_input.text = ''

Я довольно новичок в kivy и Python, поэтому я не уверен, что это был лучший способ очистить тексты, но что я сделал не так?Или, если бы вы, ребята, могли бы дать немного света наилучшим способом сделать это.

1 Ответ

0 голосов
/ 03 октября 2018

Проблема в вашем случае заключается в передаче текста, но не свойства текста, а копии текста, поэтому даже если вы установите его пустым, он не будет отражен в текстовом вводе.Вы должны передать текстовый ввод в виде списка, выполнить итерацию и установить свойство с пустой строкой:

*. Kv

Button:
    text: 'Create Ura'
    id: bt_create
    on_press: root.uraConfig()
    on_release: root.clear_inputs([context_input, ura_file_name]) # <-- add brackets

*. Py

class CreateUra(GridLayout):
    def clear_inputs(self, text_inputs):
        for text_input in text_inputs:
            text_input.text = ""
...