我使用 Flet 作为我的项目的 GUI 库。我有以下代码:
MAIN_GUI = ft.Container(
margin=ft.margin.only(bottom=40),
expand=True,
content=ft.Row([
ft.Card(
elevation=30,
expand=4,
content=ft.Container(
content=ft.Column([
ft.Text("LEFT SIDE, 1st row", size=30, weight=ft.FontWeight.BOLD),
ft.Text("LEFT SIDE 2nd row", size=30, weight=ft.FontWeight.NORMAL)
]),
border_radius=ft.border_radius.all(20),
bgcolor=ft.colors.WHITE24,
padding=45,
)
),
ft.Tabs(
selected_index=0,
animation_duration=300,
expand=3,
tabs=[
ft.Tab(
text="Tab 1",
icon=ft.icons.SEARCH,
content=ft.Container(
content=ft.Card(
elevation=30,
content=ft.Container(
content=ft.Text("Amazing TAB 1 content", size=50, weight=ft.FontWeight.BOLD),
border_radius=ft.border_radius.all(20),
bgcolor=ft.colors.WHITE24,
padding=45,
)
)
),
),
ft.Tab(
text="Tab 2",
icon=ft.icons.SETTINGS,
content=ft.Text("Amazing TAB 2 content"),
),
],
)
])
)
def main(page: ft.Page):
page.padding = 50
page.add(MAIN_GUI)
page.update()
if __name__ == '__main__':
ft.app(target=main)
这将创建一个窗口,该窗口分为左右部分,其中左侧部分有一个
ft.Card
,右侧部分有 2 个选项卡,其中一个选项卡也有一个 ft.Card
。
这些 Flet 的小部件必须具有
expand=True
才能使 ft.Tabs
正常工作,但是,我希望子部件,特别是 ft.Card
小部件不展开,相反,它们的宽度和高度应该根据里面的内容进行变换。
使用
Container
代替 Column
:
...
ft.Tab(
text="Tab 1",
icon=ft.icons.SEARCH,
content=ft.Column(
controls=[
ft.Card(
elevation=30,
content=ft.Container(
content=ft.Text("Amazing TAB 1 content", size=50, weight=ft.FontWeight.BOLD),
border_radius=ft.border_radius.all(20),
bgcolor=ft.colors.WHITE24,
padding=45,
)
)
]
),
)
...
插入
Column
作为 Tab
的基本控件后,您现在可以在其 ' controls
属性中添加任何其他控件,您会发现问题已解决。