from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.button import Button
from kivy.app import App
from kivy.graphics import Rectangle,Color # 导入位置 颜色模块
# AnchorLayout中有anchor_x和anchor_y这两个参数
# anchor_x:默认为center 还可以left center right 左中右
# anchor_y:默认为center 还可以center top bottom 中上下
# 锚点布局又称为九宫格布局
class AnchorLayoutWidget(AnchorLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
# 执行布局的画布方法
with self.canvas:
# 设置颜色
Color(1,1,1,1)
# 这个画布大小为布局大小
self.rect=Rectangle(pos=self.pos,size=self.size)
# TODO 位置绑定为布局位置
self.bind(pos=self.update_rect,size=self.update_rect)
# 嵌套第一个布局
anchor_first=AnchorLayout(anchor_x='left',anchor_y='top')
anchor_first.add_widget(Button(text='bt1',size_hint=[.3,.2]))
# 嵌套第二个布局
anchor_second = AnchorLayout(anchor_x='right',anchor_y='bottom')
anchor_second.add_widget(Button(text='bt2',size_hint=[.3,.2]))
self.add_widget(anchor_first)
self.add_widget(anchor_second)
# 这里要传多值参数
def update_rect(self,*args):
self.rect.pos=self.pos
self.rect.size=self.size
class AnchorLayoutApp(App):
def build(self):
return AnchorLayoutWidget()
if __name__ == '__main__':
AnchorLayoutApp().run()