Текст метки не обновляется правильно при вызове нескольких функций on_press в kivy - PullRequest
0 голосов
/ 10 апреля 2020

Когда нажата кнопка сохранения, я хочу показать «данные были сохранены» в течение нескольких секунд. Кажется, что он вызывает обе функции, но мой текст метки не обновляется, как ".send_button_answer.text = 'Данные сохранены'". В конце на этикетке просто отображается точка -> '.'.

Мой kv-файл:

Button:
    id: send_button
    text: 'Save data'
    on_press: app.set_variable_to_db("vendor", user_name.text) 
    on_press: root.configuration_save_button_pressed()
Label:
Label:
    id: send_button_answer
    text: "..."

Мой Python код:

class TestWidget(TabbedPanel):
    def configuration_save_button_pressed(self):
        self.ids.send_button_answer.text = 'Data saved'
        self.configuration_save_button_pressed_2()

    def configuration_save_button_pressed_2(self):
        time.sleep(2)
        self.ids.send_button_answer.text = '.'

1 Ответ

1 голос
/ 10 апреля 2020

time.sleep делает то, что говорит на жестяной банке: программа ничего не делает, включая обновление gui.

Решение состоит в том, чтобы работать с часами Киви, а не блокировать их. Вместо этого выполните Clock.schedule_once(self.configuration_save_button_pressed_2, 2) и заставьте этот метод ожидать один аргумент (он может игнорировать этот аргумент, но расписание по-прежнему будет его передавать).

...