Чистый холст на языке киви

Вы можете вызвать холст виджета из языка kivy, используя член canvas[.before|.after] следующим образом.

<MyWidget>:
    canvas:
        Rectangle:
            source: 'mylogo.png'
            pos: self.pos
            size: self.size

Как я могу очистить холст, прежде чем ставить инструкции?


person eviltnan    schedule 18.01.2014    source источник


Ответы (2)


Используйте 1_:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder

kv_string = '''
<MyWidget>:
    canvas:
        Color:
            rgb: 0.1, 0.6, 0.3
        Ellipse:
            size: self.size     
            pos: self.pos
        Clear
        Color:
            rgb: 0.6, 0.2, 0.1
        Ellipse:
            size: self.size     
            pos: self.center
'''

Builder.load_string(kv_string)

class MyWidget(Widget):
    pass

class TestApp(App):
    def build(self):
        return MyWidget()

if __name__ == '__main__':
    TestApp().run()

В приведенном выше примере будет нарисован только один эллипс, так как первый стирается командой Clear. Вы можете вызвать его из Python, используя такой код:

class SomeWidget(Widget):
    def some_method(self):
        self.canvas.clear()
        with self.canvas:
            # ...
person Nykakin    schedule 18.01.2014
comment
Примечание. Я делал вещи, используя сторону Python и self.canvas.after вместо self.canvas, поэтому мне нужно было использовать self.canvas.after.clear, и он работал правильно. - person Erik; 24.12.2018

я использовал

Window.clearcolor = (x,y,z,w)

и это работает... так зачем использовать холст?

person Arthur Fleischman    schedule 22.02.2019