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

如何在Flet的TextField中接收int/float类型的数字输入?

Flet TextField获取数字输入的解决办法

一、给TextField设置数字键盘

Flet的TextField可以通过keyboard_type参数指定输入键盘类型,设置为ft.KeyboardType.NUMBER后,移动端会直接弹出数字键盘,桌面端也会引导用户优先输入数字:

quantity_input = ft.TextField(label="你想要添加多少家公司?", keyboard_type=ft.KeyboardType.NUMBER)

(注:桌面端仍能手动输入非数字,所以必须配合后续的类型校验)

二、将输入字符串转为数字并处理错误

TextField的value属性返回的永远是字符串,需要手动转换为int或float类型,同时要处理用户输入非数字的情况,避免程序崩溃。

修正后的完整代码

import flet as ft

def main(page: ft.Page):
    # 初始化数量输入框,指定数字键盘
    quantity_input = ft.TextField(label="你想要添加多少家公司?", keyboard_type=ft.KeyboardType.NUMBER)
    list_companies = []
    
    def btn_empresas(e):
        try:
            # 去除输入前后空格,转为整数
            quantity = int(quantity_input.value.strip())
            if quantity <= 0:
                page.add(ft.Text("请输入大于0的数字", color=ft.colors.RED))
                return
            
            # 循环创建每家公司的输入项
            for position in range(1, quantity + 1):
                company = {
                    "value": ft.TextField(label=f"第{position}家公司的水库价值:", keyboard_type=ft.KeyboardType.NUMBER),
                    "index": ft.TextField(label=f"第{position}家公司的索引:", keyboard_type=ft.KeyboardType.NUMBER),
                    "volume": ft.TextField(label=f"第{position}家公司的容量:", keyboard_type=ft.KeyboardType.NUMBER)
                }
                list_companies.append(company)
                page.add(ft.Text(f"已添加第{position}家公司"))
                # 将输入框添加到页面供用户填写
                page.add(company["value"], company["index"], company["volume"])
                
        except ValueError:
            # 输入非有效数字时给出提示
            page.add(ft.Text("请输入有效的数字!", color=ft.colors.RED))
    
    # 将输入框和按钮添加到页面
    page.add(quantity_input, ft.ElevatedButton("确认数量并添加公司", on_click=btn_empresas))

if __name__ == "__main__":
    ft.app(target=main)

关键注意事项

  • 不能直接用TextField对象做数值运算:原代码中直接拿quantity(TextField对象)参与循环,这是错误的,必须先获取其value属性并转换为数字类型。
  • 必须做异常处理:用户可能输入字母、符号等非数字内容,用try-except捕获ValueError,可以避免程序崩溃并给出友好提示。
  • 避免变量名冲突:别用list这类Python内置类型名当变量名,会覆盖原有功能,换成list_companies这类自定义名称更稳妥。

内容的提问来源于stack exchange,提问作者Natã Sales

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:46:24