Есть ли способ не делать Popup анимацию? - PullRequest
0 голосов
/ 19 октября 2018

В kivy popup я вижу, что могу контролировать, будет ли он выполнять анимацию или нет, объявив

popup.open(animation=False) или popup.dismiss(animation=False)

Однако, когда я не контролирую вручнуюоткрыть и закрыть, я не могу найти способ не делать анимацию.

Вот код из ModalView,

, которыйродительский класс для Popup

def dismiss(self, *largs, **kwargs):
    '''Close the view if it is open. If you really want to close the
    view, whatever the on_dismiss event returns, you can use the *force*
    argument:
    ::

        view = ModalView()
        view.dismiss(force=True)

    When the view is dismissed, it will be faded out before being
    removed from the parent. If you don't want animation, use::

        view.dismiss(animation=False)

    '''
    if self._window is None:
        return
    if self.dispatch('on_dismiss') is True:
        if kwargs.get('force', False) is not True:
            return
    if kwargs.get('animation', True):
        Animation(_anim_alpha=0., d=self._anim_duration).start(self)
    else:
        self._anim_alpha = 0
        self._real_remove_widget()

Как я уже говорил, я могу сделать popup.dismiss(animation=False), чтобы не запускать анимацию.Тем не менее, я не могу найти способ вставить параметр при автоматическом отключении (касание за пределами всплывающего окна).

Можно ли сделать это, не касаясь ModalView самого источника?

Резюме: как не выполнять анимацию при автоматическом закрытии всплывающего окна?

1 Ответ

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

Я мог бы решить эту проблему, унаследовав dismiss() от ModalView

class PopupNoAnimation(Popup):
    def __init__(self, **kwargs):
        super(PopupNoAnimation, self).__init__(**kwargs)

    def dismiss(self, *largs, **kwargs):
        if self._window is None:
            return
        if self.dispatch('on_dismiss') is True:
            if kwargs.get('force', False) is not True:
                return

        self._anim_alpha = 0
        self._real_remove_widget()

Теперь dismiss не создает объект Animation, что не приводит к анимации при отклонении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...