Удаление виджета с Kivy - PullRequest
       18

Удаление виджета с Kivy

0 голосов
/ 27 апреля 2018

Я пытаюсь удалить виджет Image после завершения анимации. До сих пор мне удалось анимировать виджет и затем вызвать метод animation_complete после завершения анимации. К сожалению, виджет не удаляется.

Что я делаю не так?

class ShootButton(Widget):
    def bullet_fly(self):
        def animation_complete(animation, widget):
            print "removing animation"
            self.remove_widget(widget=bullet1)


        with self.canvas:
            bullet1 = Image(source='bullet.png', pos = (100,200))
            animation1 = Animation(pos=(200, 300))
            animation1.start(bullet1)
            animation1.bind(on_complete=animation_complete)

1 Ответ

0 голосов
/ 27 апреля 2018

Вам не нужно использовать холст для добавления анимации, но добавьте виджет напрямую, используя add_widget(), а затем удалите его с помощью remove_widget(). В вашем первоначальном случае bullet1 это не дети ShootButton.

from kivy.app import App
from kivy.core.window import Window
from kivy.uix.image import Image
from kivy.uix.widget import Widget
from kivy.animation import Animation


Window.size = (360, 640)

class ShootButton(Widget):
    def bullet_fly(self):
        def animation_complete(animation, widget):
            self.remove_widget(widget)
        bullet1 = Image(source='bullet.png', pos = (100,200))
        self.add_widget(bullet1)
        animation1 = Animation(pos=(200, 300))
        animation1.start(bullet1)
        animation1.bind(on_complete=animation_complete)


class MyApp(App):
    def build(self):
        button = ShootButton()
        button.bullet_fly()
        return button


if __name__ == '__main__':
    MyApp().run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...