Kivy лучший способ запланировать remove_widget - PullRequest
0 голосов
/ 13 июля 2020

Я хочу удалить свой виджет через некоторое время после воспроизведения анимации, иначе анимация будет практически незаметна, если виджет будет удален сразу после этого. Следовательно, я попытался использовать следующую команду, ожидая, что виджет будет удален через 0,5 секунды после некоторой анимации:

Clock.schedule_once(partial(self.remove_widget, k), 0.5)  # where k is my widget

Но я получаю следующую ошибку, поскольку Clock передает дополнительные параметры методу:

TypeError: remove_widget() takes 2 positional arguments but 3 were given

Есть ли способ запланировать удаление виджета?

1 Ответ

1 голос
/ 13 июля 2020

Функция обратного вызова должна принимать один позиционный аргумент, поэтому

Clock.schedule_once(lambda dt: self.remove_widget(k), 0.5)

является правильным. Но я рекомендую вам другой способ.

def do_something_when_animation_ends(anim, widget):
    pass
anim = Animation(...)
anim.bind(on_complete=do_something_when_animation_ends)
anim.start(...)
...