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

Flet中Text组件无法完整显示变量内容的问题求助

问题分析与解决

核心问题

  1. 循环覆盖变量:查询数据的for循环中,每次迭代都会重新赋值data变量,最终data只会保留最后一条查询结果。但print(data)在每次循环都执行,所以能输出所有结果,而Text组件只拿到最后一次的data。
  2. 字符串换行错误:代码中直接在字符串里换行,不符合Python字符串语法,应该用转义字符\n实现换行。

修正后的代码

查询数据代码

email = mail.value
if email:  # 简化空值判断
    search_filter = {"email": email}
    response = collection.find(search_filter)
    # 用列表收集所有结果
    data_lines = []
    for alimentos in response:
        food = alimentos['alimento']
        vencimento = alimentos['vencimento']
        # 用\n实现换行,将每条结果加入列表
        line = f"Alimentos de : {email}: \n{food} Vencimento : {vencimento}"
        data_lines.append(line)
    # 将所有结果合并成一个字符串,用空行分隔每条数据
    data = "\n\n".join(data_lines)
    print(data)

Text组件相关代码

def bs_close(e):
    bs2.open = False
    bs2.update()

bs2 = BottomSheet(
    Container(
        Column(
            [
                # 保留原Text配置,现在data包含所有查询结果
                Text(data, size=10, weight="bold", expand=True),
                ElevatedButton("Ok", on_click=bs_close),
            ],
            alignment=MainAxisAlignment.CENTER,
            expand=True
        ),
        padding=10,
    ),
    open=True,
)
page.overlay.append(bs2)
page.update()

额外说明

  • 用f-string替代字符串拼接,代码更简洁易读。
  • 空值判断简化为if email:,效果和if not email == ""一致。
  • 用"\n\n".join(data_lines)合并结果,每条数据之间用空行分隔,显示更清晰。

内容的提问来源于stack exchange,提问作者Renzo-M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:52:39