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

如何在Python Flet中验证TextField仅允许输入数字

在Flet TextField中实现仅保留数字输入(移除非数字字符)

问题分析

当前验证逻辑在检测到非数字输入时会清空整个TextField,不符合需求——我们需要自动过滤掉输入中的非数字字符,仅保留数字内容。

修改后的验证函数

替换原validarNumeros函数为以下逻辑,通过字符过滤实现仅保留数字:

def validarNumeros(self, campo, pagee):
    # 从输入中提取所有数字字符
    solo_numeros = ''.join([caracter for caracter in campo.value if caracter.isdigit()])
    # 仅当内容有变化时更新,避免重复刷新页面
    if solo_numeros != campo.value:
        self.cedula.value = solo_numeros
        pagee.update()

绑定TextField的事件

创建TextField时,将验证函数绑定到on_change事件,确保用户每输入一个字符就触发验证:

self.cedula = TextField(
    label="Cedula",
    hint_text="Ingresar Cedula",
    border_radius=30,
    border_color="#820000",
    width=300,
    height=60,
    on_change=lambda e: self.validarNumeros(e.control, e.page)
)

逻辑说明

  1. 使用列表推导式遍历输入字符串的每个字符,筛选出仅数字字符并拼接成新字符串。
  2. 加入内容对比判断,只有当过滤后的内容与原输入不同时才更新组件,减少不必要的页面刷新。
  3. 绑定on_change事件后,用户每输入/删除一个字符都会触发验证,实时过滤非数字内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:32:08