Flet 布局控件:ft.Stack(栈)一个将其子控件堆叠在一起的控件

deer332025-02-10技术文章46

ft.Stack(栈)堆叠控件将子元素堆叠在一起。这个控件很有用,如果你想以简单的方式重叠多个子元素,例如有一些文本和一张图片,叠加一个渐变色,并在底部附加一个按钮。

一、基本用法

示例代码如下:

import flet as ft

def example():
    st = ft.Stack(
        [
            ft.Image(
                src="https://scpic.chinaz.net/files/default/imgs/2023-06-23/2910171d2c81b140.jpg",
                width=650,
                height=415,
                fit=ft.ImageFit.CONTAIN,
            ),
            ft.Row(
                [
                    ft.Text(
                        "夏日荷塘古风古韵古典美女写真",
                        color="blue",
                        size=30,
                        weight="bold",
                        opacity=0.5,
                    )
                ],
                alignment=ft.MainAxisAlignment.CENTER,
            ),
        ],
        width=650,
        height=415,
    )
    return st

def main(page:ft.Page):
    page.title = "Flet 布局控件:ft.Stack(栈)"
    page.window.width  = 650
    page.window.height = 415
    page.window.center()
    page.padding = 0
    page.add(example())
ft.app(target=main)


示例代码如下:

import flet as ft

def example():
    st = ft.Stack(
            [
                ft.CircleAvatar(
                    foreground_image_url="https://scpic.chinaz.net/files/default/imgs/2023-02-15/feab76c0c82acbc9_s.jpg",
                    width=60,
                    height=60
                ),
                ft.Container(
                    content=ft.CircleAvatar(bgcolor=ft.Colors.GREEN, radius=5),
                    alignment=ft.alignment.bottom_left,
                    width=50,
                    height=50
                ),
            ],
        )
    return st

def main(page:ft.Page):
    page.title = "Flet 布局控件:ft.Stack(栈)2"
    page.window.width  = 650
    page.window.height = 415
    page.window.center()
    page.padding = 10
    page.add(example())
ft.app(target=main)

二、属性

alignment

非定位控件(那些在特定轴上既不指定顶部也不指定底部的控件)的对齐方式。

clip_behavior

内容将根据此选项被裁剪(或不被裁剪)。属性值是 ClipBehavior ,默认为 HARD_EDGE。

controls

要在 Stack 中显示的控件列表。列表中的最后一个控件将被显示在顶部。

fit

非定位控件的大小方式。值是 StackFit ,它有以下可能的值:

  • EXPAND - 从父控件传递给 Stack 的约束将被紧缩到允许的最大大小。例如,如果 Stack 有 loose 约束,宽度在 10 到 100 之间,高度在 0 到 600 之间,那么非定位控件将被大小为 100 像素宽和 600 高。
  • PASS_THROUGH - 从父控件传递给 Stack 的约束将被传递给非定位控件,不进行修改。例如,如果一个扩展的 Stack 是 Row 的子控件,那么水平约束将被紧缩,垂直约束将被松散。
  • LOOSE(默认) - 从父控件传递给 Stack 的约束将被松散。例如,如果 Stack 有约束强制它为 350x600,那么这将允许非定位控件有任何宽度从 0 到 350 和任何高度从 0 到 600。

(汇报完毕,感谢收看!收藏+点赞)