Flet的 Python代码中,expand选项不起作用
请问有没有人能看出为什么我添加的这三张卡在水平方向没有展开,垂直方向都很完美,但在水平方向上我尝试了很多方法,仍然无法让它们拉伸以填满右侧的所有空白。
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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

