跳到主要内容

CupertinoPicker

一个 iOS 风格的选择器。

示例

Live example

基本示例

import flet as ft

def main(page):
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

selected_fruit_ref = ft.Ref[ft.Text]()

fruits = [
"苹果",
"芒果",
"香蕉",
"橙子",
"菠萝",
"草莓",
]

def handle_picker_change(e):
selected_fruit_ref.current.value = fruits[int(e.data)]
page.update()

picker = ft.CupertinoPicker(
selected_index=3,
# item_extent=40,
magnification=1.22,
# diameter_ratio=2,
squeeze=1.2,
use_magnifier=True,
# looping=False,
on_change=handle_picker_change,
controls=[ft.Text(f) for f in fruits],
)

page.add(
ft.Row(
tight=True,
controls=[
ft.Text("已选水果:", size=23),
ft.TextButton(
content=ft.Text(fruits[3], size=23, ref=selected_fruit_ref),
style=ft.ButtonStyle(color=ft.colors.BLUE),
on_click=lambda _: page.show_bottom_sheet(
ft.CupertinoBottomSheet(
picker,
height=216,
padding=ft.padding.only(top=6),
)
),
),
],
),
)

ft.app(target=main)

属性

bgcolor

选择器的背景颜色

controls

表示此选择器中项目的控件列表。

diameter_ratio

此选择器的高度与模拟圆柱直径的相对比率。

较小的值会在可滚动的轮子中创建更明显的曲率。

item_extent

所有子项的统一高度。默认为 32

looping

如果为 TRUE,则轮子上的子项可以循环滚动。默认为 FALSE

magnification

如果使用放大镜,则放大率。

默认值为 1.0,不会改变任何内容。如果值 > 1.0,则中心项目将以该比率放大,并且它还将以平面方式呈现,而不是像列表的其余部分那样呈圆柱体。如果放大率 < 1.0,则会缩小项目。

必须是正数。

off_axis_fraction

轮子水平偏离中心的程度,作为其宽度的比例。

selected_index

controls 列表中所选项目的索引(从 0 开始)。

squeeze

轮子上子项的角度紧凑度。

use_magnifier

是否使用轮子中心项的放大镜。

事件

on_change

选择更改时触发。