《Python+Kivy(App开发)从入门到实践》自学笔记:AnchorLayout布局

本文详细介绍了如何在Kivy中使用AnchorLayout进行子部件定位,并通过实例演示了如何在py和kv文件中创建并应用AnchorLayout布局。通过这两个方式,读者可以掌握锚点布局的基本用法及其在实际项目中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

章节目录与知识点总揽

2.4 AnchorLayout布局

AnchorLayout——锚点布局

        可以将子部件设置在左上、中上、右上、左中、正中、右中、左下、中下、右下共9个位置。

布局的使用方法:指定anchor_x和anchor_y属性即可。

2.4.1使用步骤:

        1.新建一个main.py文件。

        2.导入App类以及相关的包,例如:AnchorLayout、Button

        3.创建一个类让它继承App类。

        4.在该类内实现build()方法

        5.编写具体的布局或布局类,让其继承AnchorLayout类。

        6.在build()方法结尾返回具体的布局或布局类。

        7.通过run()方法运行实例。

2.4.2 在py内使用AnchorLayout布局

        新建main.py文件,代码如下:

from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.button import Button
from kivy.graphics import Rectangle,Color

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)
            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='Hello',size_hint=[.3,.2]))

        #嵌套第二个布局
        anchor_second = AnchorLayout(anchor_x='right',anchor_y='bottom')
        #添加按钮
        anchor_second.add_widget(Button(text='Anchor',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 AnchorApp(App):
    def build(self):
        return AnchorLayoutWidget()

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

        

        运行结果如下图:

38baae2f7d954c45ace31eb1fbbc38eb.png

 2.4.3 在kv内使用AnchorLayout布局

        根据AnchorApp类名新建一个anchor.kv文件,修改main.py文件内容,具体如下:

from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout


class AnchorLayoutWidget(AnchorLayout):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)

class AnchorApp(App):
    def build(self):
        return AnchorLayoutWidget()

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

        anchor.py文件内容如下:

<AnchorLayoutWidget>:
	padding:20
	AnchorLayout:
		anchor_x:'left'
		anchor_y:'top'
		Button:
			text:'Hello'
			size_hint:.3,.2
	AnchorLayout:
		anchor_x:'right'
		anchor_y:'bottom'
		Button:
			text:'Anchor'
			size_hint:.3,.2

        运行main.py程序,因为背景设置为黑色,其他与在py内执行结果一致。具体结果如下图:

8c65e5463a194452a1398c9d7169703b.png

上一篇:BoxLayout布局

下一篇:GridLayout布局

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静候光阴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值