kivy — сохранение пользовательского ввода в список python

#python #kivy #kivy-language

#python #kivy #kivy-язык

Вопрос:

У меня возникли некоторые трудности с пониманием взаимосвязи между kivy и python.

Я пытаюсь сделать что-то очень простое, в качестве первого шага, и было бы здорово, если бы кто-нибудь мог показать пример: как я могу сохранить входные данные в списке python после того, как пользователь введет данные и нажмет «ввод»? Спасибо

Ответ №1:

Пример этого. Пользователь может ввести 3 вещи, и они сохраняются в массиве. Если вы хотите, чтобы пользователь вводил что-то одно и сохранял его в массиве, вам придется разделить ввод.

 result = []
for i in range(3):
    answer = input()
    result.append(answer)

print(result)
  

ПРИМЕЧАНИЕ: input() находится raw_input() в python2.x

В kivy :

 from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput


class Screen(GridLayout):
    def __init__(self, **kwargs):
        super(Screen, self).__init__(**kwargs)
        self.input = TextInput(multiline=False)
        self.add_widget(self.input)
        self.input.bind(on_text_validate=self.print_input)
    def print_input(self, value):
        print(value.text)


class MyApp(App):

    def build(self):
        return Screen()


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

Этот простой скрипт предоставит вам поле ввода, и когда вы нажмете enter, он выведет его текст на терминал. При желании вы можете легко сохранить его в списке.

Комментарии:

1. Спасибо @Gabor, я знаю, как это делается с помощью raw_input . Я борюсь с kivy.

2. Сначала kivy вам нужно будет создать какой-то фрейм, в котором пользователь может что-то вводить. Я почти уверен, что для этого есть учебные пособия, поскольку это не так просто

3. Да, в этом-то все и дело. Существует несколько руководств, но ни одно из них не является особенно ясным, или полным, или точно решает эту проблему. В любом случае спасибо.

4. Идеальный. Я пропустил строку input.bind. Теперь это работает — спасибо!

5. В качестве последующего вопроса, как я могу это сделать, используя язык kivy? Допустим, у меня есть несколько входных переменных, которые имеют некоторые схожие свойства — как я могу создать универсальный виджет из файла kv и вызвать его из Python?