章节知识点总揽
3.3.2 canvas.before属性和canvas.after属性
canvas.before和canvas.after属性用法与canvas基本一致,主要差别就是在执行顺序先后上,其优先级如下:
canvas.before > canvas > widget(canvas.before、canvas、canvas.after) > canvas.after
实例:使用画布的canvas.before和canvas.after属性
新建一个canvas.kv文件,在其中添加一个canvas.before和canvas.after属性和按钮小部件,具体如下:
<RelativeWidget>:
canvas.before:
Color:
rgba:[1,1,1,1]
Rectangle:
pos:self.pos
size:self.size
canvas:
Color:
rgba:[.5,.1,.1,.1]
Rectangle:
pos:self.pos
size:300,300
canvas.after:
Color:
rgba:[.1,.5,.1,.1]
Rectangle:
pos:200,200
size:300,300
Button:
text:'Button 0'
pos:100,100
size_hint:None,None
size:300,300
canvas.after:
Color:
rgba:[.1,.1,.5,1]
Rectangle:
pos:self.pos
size:100,100
main.py文件,延用上一篇的,删除掉里面关于布局的内容,具体如下:
from kivy.app import App
from kivy.uix.relativelayout import RelativeLayout
from kivy.graphics import Rectangle,Color
from kivy.graphics.instructions import InstructionGroup
class RelativeWidget(RelativeLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
class CanvasApp(App):
def build(self):
return RelativeWidget()
if __name__ == '__main__':
CanvasApp().run()
运行程序,按照顺序所示,白色的canvas.before属性最先运行(背景色),其次是红色的canvas画布遮住了白色的背景,再次是小部件(按照canvas.before、canvas、canvas.after属性的优先级),最后显示绿色的canvas.after属性,如下图所示:
书上颜色比这个深,不知道为什么......
下一篇:基本图形绘制——旋转坐标空间