用kivy语言清洁画布

evi*_*nan 5 python kivy

您可以使用canvas[.before|.after]像这样的成员从kivy语言调用widget的画布.

<MyWidget>:
    canvas:
        Rectangle:
            source: 'mylogo.png'
            pos: self.pos
            size: self.size
Run Code Online (Sandbox Code Playgroud)

在我发布说明之前如何清除画布?

Nyk*_*kin 8

用途Clear:

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()
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,将仅绘制一个椭圆,因为第一个椭圆将被Clear命令擦除.您可以使用以下代码从Python调用它:

class SomeWidget(Widget):
    def some_method(self):
        self.canvas.clear()
        with self.canvas:
            # ...
Run Code Online (Sandbox Code Playgroud)