Переменная не обновляется содержимым TextInput после изменения содержимого в Kivy

Я создал в Kivy окно редактирования, позволяющее отображать содержимое словаря и изменять содержимое связанных элементов (текста). Сначала все поля TextInput инициализируются данными из первого шага процесса, хранящимися в словаре. Есть кнопка для запуска и отображения следующего шага. Но пользователь может тем временем изменить содержимое определенного поля TextInput. При изменении новое содержимое TextInput должно быть присвоено локальной переменной (в приведенном ниже примере, представленном в виде печати). Короче у меня есть следующий код. К сожалению, переменная не обновляется. Что случилось?

Часть питона:

from kivy.properties import StringProperty

class pezHome(Widget):
    title = StringProperty()

    def init_pez(self):
        self.title = "Enter your title"

    def update(self):
        new_title = self.title
        print "New title is: ", new_title

class pezApp(App):
    def build(self):
        homeWin = pezHome()
        homeWin.init_editor()
        return homeWin

pezApp().run()

Соответствующий файл kv:

<pezHome>:
    TextInput:
            text: root.title
            on_text: root.title
            readonly: False

person Bill Bridge    schedule 14.01.2016    source источник
comment
К счастью, я нашел решение в другом элементе: stackoverflow.com/a/32090870/5708480   -  person Bill Bridge    schedule 30.01.2016


Ответы (1)


Вы не вызываете свой метод update ... вот необходимое изменение

<pezHome>:
    TextInput:
        text: root.title
        on_text: root.update() # was root.title ...
        readonly: False
person Yoav Glazner    schedule 15.01.2016
comment
Дорогой Йоав, мне очень жаль, но мой пример не очень ясен. Я обновил части кода, так как в моем коде был цикл инициализации. Проблема в том, что в форме pezHome есть поле с названием title. Изначально это поле содержит текст «Введите свой заголовок». (Форма состоит из нескольких полей ....). Теперь пользователь может изменять содержимое полей. По завершении нажимает кнопку сохранения (которая вызывает функцию обновления), но новое содержимое этих полей недоступно в этом контексте. Печать стоп-кадров Введите заголовок. Так что я здесь делаю не так? - person Bill Bridge; 30.01.2016
comment
Ааааа, Билл, у меня такая же проблема. Вы нашли ответ? - person Saelyth; 14.03.2016