跳到主要内容

ResponsiveRow

ResponsiveRow 借鉴了 Bootstrap 网络框架的网格布局思想。

ResponsiveRow 允许将子控件对齐到虚拟列中。默认情况下,虚拟网格有 12 列,但可以使用 ResponsiveRow.columns 属性进行自定义。

类似于 expand 属性,每个控件现在都有 col 属性,可以指定控件应该跨越多少列。例如,要创建一个由两个跨越 6 个虚拟列的列组成的布局:

import flet as ft

ft.ResponsiveRow([
ft.Column(col=6, controls=[ft.Text("Column 1")]),
ft.Column(col=6, controls=[ft.Text("Column 2")])
])

ResponsiveRow 是“响应式”的,因为它可以根据屏幕(页面、窗口)大小的变化来调整其子控件的大小。在上面的示例中,col 属性是一个常数,它意味着子控件将在任何屏幕大小下跨越 6 列。

如果 ResponsiveRow 的子控件没有指定 col 属性,它将跨越最大数量的列。

col 可以根据特定的“断点”配置不同的值。断点是命名的尺寸范围:

断点尺寸
xs<576px
sm≥576px
md≥768px
lg≥992px
xl≥1200px
xxl≥1400px

例如,以下示例在移动设备上将内容折叠到单个列中,而在较大屏幕上将占用两个列:

import flet as ft

ft.ResponsiveRow([
ft.Column(col={"sm": 6}, controls=[ft.Text("Column 1")]),
ft.Column(col={"sm": 6}, controls=[ft.Text("Column 2")])
])

示例

Live 示例

ResponsiveRow

import flet as ft

def main(page: ft.Page):
def page_resize(e):
pw.value = f"{page.width} px"
pw.update()

page.on_resize = page_resize

pw = ft.Text(bottom=50, right=50, style="displaySmall")
page.overlay.append(pw)
page.add(
ft.ResponsiveRow(
[
ft.Container(
ft.Text("Column 1"),
padding=5,
bgcolor=ft.colors.YELLOW,
col={"sm": 6, "md": 4, "xl": 2},
),
ft.Container(
ft.Text("Column 2"),
padding=5,
bgcolor=ft.colors.GREEN,
col={"sm": 6, "md": 4, "xl": 2},
),
ft.Container(
ft.Text("Column 3"),
padding=5,
bgcolor=ft.colors.BLUE,
col={"sm": 6, "md": 4, "xl": 2},
),
ft.Container(
ft.Text("Column 4"),
padding=5,
bgcolor=ft.colors.PINK_300,
col={"sm": 6, "md": 4, "xl": 2},
),
],
),
ft.ResponsiveRow(
[
ft.TextField(label="TextField 1", col={"md": 4}),
ft.TextField(label="TextField 2", col={"md": 4}),
ft.TextField(label="TextField 3", col={"md": 4}),
],
run_spacing={"xs": 10},
),
)
page_resize(None)

ft.app(target=main)

属性

alignment

子控件水平排列的方式。

属性值是 MainAxisAlignment 。默认值是 START

columns

虚拟列的数量。默认值是 12

controls

要在 ResponsiveRow 中显示的控件列表。

rtl

将文本方向设置为右到左。默认值是 False

run_spacing

行内容换行时的间距。默认值是 10。

spacing

行中控件之间的间距。默认值是 10 虚拟像素。间距仅在 alignment 设置为 startendcenter 时应用。

vertical_alignment

子控件垂直排列的方式。

属性值是 CrossAxisAlignment 。默认值是 START