锚点布局

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()

 

posted @ 2021-03-31 14:45  trysocket  阅读(79)  评论(0编辑  收藏  举报