Flet的 Python代码中,expand选项不起作用

编程语言 2026-07-09

请问有没有人能看出为什么我添加的这三张卡在水平方向没有展开,垂直方向都很完美,但在水平方向上我尝试了很多方法,仍然无法让它们拉伸以填满右侧的所有空白。
A我得到的结果截图

以下是代码:

mainpage = ft.Row(
  controls=[
      ft.Container(
          content=ft.Card(
              content=ft.Container(
                  content=ft.Column(
                      [
                          ft.Text(
                              "Select your IP",
                              weight=ft.FontWeight.BOLD,
                              size=18,
                              text_align=ft.TextAlign.CENTER,
                          ),
                          *IPBox,
                      ],
                      spacing=5,
                      horizontal_alignment=ft.CrossAxisAlignment.CENTER,
                  ),
                  padding=20,
              )
          ),
          expand=True,
      ),

      ft.Container(
          content=ft.Column(
              [
                  ft.Container(
                      content=ft.Card(
                          content=ft.Container(
                              content=ft.Text("Card 1"),
                              padding=20,
                          ),
                          expand=1
                      ),
                      expand=True
                  ),
                  ft.Container(
                      content=ft.Card(
                          content=ft.Container(
                              content=ft.Text("Card 1"),
                              padding=20,
                          ),
                          expand=1
                      ),
                      expand=True
                  ),
                  ft.Container(
                      content=ft.Card(
                          content=ft.Container(
                              content=ft.Text("Card 1"),
                              padding=20,
                          ),
                          expand=1
                      ),
                      expand=True
                  ),
              ],
              spacing=10,
              expand=True,
          ),
          expand=True,
      ),
  ],
  expand=True,
)

解决方案

我自己写了minimal working example,并用bgcolor=测试,看看哪个对象在扩展时存在问题。

问题出在Column,它即使使用expand=True也不占满整幅宽度。

它还需要horizontal_alignment=ft.CrossAxisAlignment.STRETCH,

content=ft.Column(
    [
         # ... cards ...
    ],
    spacing=10,
    expand=True,
    horizontal_alignment=ft.CrossAxisAlignment.STRETCH,
),

完整可运行的代码:

import flet as ft


def main(page: ft.Page):
    page.title = "Flet Layout Example"

    # Minimal placeholder for IPBox (list of controls)
    IPBox = [
        ft.TextField(label="IP 1"),
        ft.TextField(label="IP 2"),
        ft.TextField(label="IP 3"),
    ]

    mainpage = ft.Row(
        controls=[
            ft.Container(
                content=ft.Card(
                    content=ft.Container(
                        content=ft.Column(
                            [
                                ft.Text(
                                    "Select your IP",
                                    weight=ft.FontWeight.BOLD,
                                    size=18,
                                    text_align=ft.TextAlign.CENTER,
                                ),
                                *IPBox,
                            ],
                            spacing=5,
                            horizontal_alignment=ft.CrossAxisAlignment.CENTER,
                        ),
                        padding=20,
                    )
                ),
                expand=True,
            ),
            ft.Container(
                content=ft.Column(
                    [
                        ft.Container(
                            content=ft.Card(
                                content=ft.Container(
                                    content=ft.Text("Card 1"),
                                    padding=20,
                                ),
                                expand=1,
                            ),
                            expand=True,
                            # bgcolor="green",
                        ),
                        ft.Container(
                            content=ft.Card(
                                content=ft.Container(
                                    content=ft.Text("Card 1"),
                                    padding=20,
                                ),
                                expand=1,
                            ),
                            expand=True,
                            # bgcolor="green",
                        ),
                        ft.Container(
                            content=ft.Card(
                                content=ft.Container(
                                    content=ft.Text("Card 1"),
                                    padding=20,
                                ),
                                expand=1,
                            ),
                            expand=True,
                            # bgcolor="green",
                        ),
                    ],
                    spacing=10,
                    expand=True,
                    horizontal_alignment=ft.CrossAxisAlignment.STRETCH,
                ),
                expand=True,
                # bgcolor="red",
            ),
        ],
        expand=True,
    )

    page.add(mainpage)


ft.app(target=main)

结果(Linux):

在此输入图片描述


顺便说一句:没有STRECH,但在Containers里使用bgcolor(“red”和“green”)

在此输入图片描述

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章