Flet中的滚动和导航铁路

0 投票
1 回答
35 浏览
提问于 2025-04-13 21:22

当我使用NavigationRail的时候,它是扁平的。我无法激活滚动功能,并且出现了这个错误:
错误显示导航栏,控件的高度没有限制。你可以设置“expand”属性,或者设置一个固定的“高度”,或者把NavigationRail放在另一个有固定高度的控件里面。

`
import time
import flet as ft


def main(page: ft.Page):
    # PAGE SETTING
    page.window_height = 800
    page.scroll = True
    page.window_width = 1200
    page.bgcolor = "#2D033B"
    page.appbar = ft.AppBar(
        leading=ft.IconButton(icon=ft.icons.MENU),
    bgcolor="#E5B8F4",
    color="#2D033B"
    )
    
    # APP CODE
    
    side_menu = ft.NavigationRail(
        selected_index=0,
        label_type=ft.NavigationRailLabelType.ALL,
        min_width=100,
        min_extended_width=100,
        leading=ft.FloatingActionButton(icon=ft.icons.CREATE, text="Add"),
        group_alignment=-0.9,
        destinations=[
            ft.NavigationRailDestination(
                icon_content=ft.Icon(ft.icons.PERSON_2_OUTLINED),
                selected_icon_content=ft.Icon(ft.icons.PERSON_2),
                label="Atila interchange",
            ),
        ],
        on_change=lambda e: print("Selected destination:", e.control.selected_index),
    )
    cl = ft.Column()
    for i in range(100):
        cl.controls.append(
            ft.ListTile(
                title=ft.Text(f"Atila{i}"),
                subtitle=ft.Text("Pasha")
            )
        )
    page.add(
        ft.Row([
            side_menu,
            ft.VerticalDivider(width=1),
                cl,
                
        ],expand=True),
    )

    


ft.app(main)
`

1 个回答

0

我对flets也不是很懂,但我觉得如果你在页面设置里不启用滚动功能,同时在列的控制选项里允许滚动的话,你就能得到你想要的效果。

import flet as ft

def main(page: ft.Page):
    # PAGE SETTING
    page.window_height = 800
    page.window_width = 1200
    #page.scroll = True
    page.bgcolor = "#2D033B"
    page.appbar = ft.AppBar(
        leading=ft.IconButton(icon=ft.icons.MENU),
    bgcolor="#E5B8F4",
    color="#2D033B"
    )

    side_menu = ft.NavigationRail(
        selected_index=0,
        label_type=ft.NavigationRailLabelType.ALL,
        # extended=True,
        min_width=100,
        min_extended_width=400,
        leading=ft.FloatingActionButton(icon=ft.icons.CREATE, text="Add"),
        group_alignment=-0.9,
        destinations=[
            ft.NavigationRailDestination(
                icon_content=ft.Icon(ft.icons.PERSON_2_OUTLINED),
                selected_icon_content=ft.Icon(ft.icons.PERSON_2),
                label="Atila interchange",
            ),
        ],
        on_change=lambda e: print("Selected destination:", e.control.selected_index),
    )
    cl = ft.Column(scroll=True)
    for i in range(100):
        cl.controls.append(
            ft.ListTile(
                title=ft.Text(f"Atila{i}"),
                subtitle=ft.Text(f"Pasha{i}", color=ft.colors.YELLOW)
            )
        )

    page.add(
        ft.Row(
            [
                side_menu,
                ft.VerticalDivider(width=1),
                cl
            ],
            expand=True,
        )
    )

ft.app(target=main)

撰写回答