You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断Flet框架中每行复选框的选中状态?

如何获取Flet中每行复选框的选中状态?

你当前的代码创建了4行共28个复选框,但没有存储这些复选框的引用,导致无法后续获取它们的选中状态。可以通过以下思路解决:

核心解决步骤

  • 用二维列表存储每行的复选框,方便按行遍历检查状态
  • 避免在循环内部嵌套定义函数,防止变量作用域问题
  • 添加触发检查的交互(比如按钮),在回调中统计每行选中项

修改后的完整代码

import flet as ft

def main(page):
    DaysOfWeek = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
    # 用二维列表存储每行的复选框,row_checkboxes[i]对应第i行的所有复选框
    row_checkboxes = []

    for _ in range(4):
        current_row_boxes = []
        for day in DaysOfWeek:
            cb = ft.Checkbox(label=day)
            current_row_boxes.append(cb)
        # 将当前行的复选框存入二维列表
        row_checkboxes.append(current_row_boxes)
        # 创建行并添加到页面
        page.add(ft.Row(spacing=30, controls=current_row_boxes))

    def check_selected(e):
        # 遍历每行,收集选中的日期
        for row_idx, boxes in enumerate(row_checkboxes):
            selected = [cb.label for cb in boxes if cb.value]
            print(f"第{row_idx+1}行选中的日期:{selected}")
            # 也可以把结果显示在页面上,比如添加Text组件
            page.add(ft.Text(f"第{row_idx+1}行选中:{', '.join(selected) if selected else '无'}"))
        page.update()

    # 添加按钮触发检查
    page.add(ft.ElevatedButton("查看选中项", on_click=check_selected))

ft.app(target=main)

代码说明

  1. 存储复选框引用:row_checkboxes是二维列表,每一行对应一个子列表,存储该行的7个复选框对象
  2. 简化行创建逻辑:直接在循环中生成每行的复选框,避免嵌套函数的作用域问题
  3. 检查选中状态:check_selected函数遍历每行的复选框,通过cb.value判断是否选中,收集选中的标签后输出或展示

内容的提问来源于stack exchange,提问作者dwburger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:07:14