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

如何在PySimpleGUI中检查输入类型?手机号纯数字校验需求

在PySimpleGUI中限制手机号输入为纯数字的方案

首先要明确:PySimpleGUI的输入元素从始至终都是以字符串类型处理用户输入的,不存在「转换为字符串前」的校验阶段。但我们可以通过实时过滤输入或输入事件校验的方式,从源头保证输入内容仅为数字。


1. 实时过滤输入(推荐)

利用输入元素的input_filter参数,直接过滤掉非数字字符,用户根本无法输入字母、符号等非法内容,从根源解决问题。

示例代码:

import PySimpleGUI as sg

# 构建布局
layout = [
    [sg.Text('手机号:'), sg.Input(key='-PHONE-', input_filter=lambda x: x if x.isdigit() else '')],
    [sg.Button('提交'), sg.Button('退出')]
]

window = sg.Window('手机号输入校验', layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == '退出':
        break
    if event == '提交':
        phone = values['-PHONE-']
        # 额外校验手机号长度
        if len(phone) == 11:
            sg.popup(f'有效手机号:{phone}')
        else:
            sg.popup('请输入11位标准手机号')

window.close()

input_filter接收一个lambda函数,仅保留输入中的数字字符,非数字内容会被直接过滤,输入框内只会显示合法数字。


2. 输入事件触发校验

如果需要在用户输入非法内容时给出提示,可以开启enable_events=True监听输入框的内容变化事件,实时检查并修正输入。

示例代码:

import PySimpleGUI as sg

layout = [
    [sg.Text('手机号:'), sg.Input(key='-PHONE-', enable_events=True)],
    [sg.Text('', key='-ERROR-', text_color='red')],  # 错误提示位
    [sg.Button('提交'), sg.Button('退出')]
]

window = sg.Window('手机号输入校验', layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == '退出':
        break
    # 监听输入框内容变化事件
    if event == '-PHONE-':
        raw_input = values['-PHONE-']
        if not raw_input.isdigit():
            # 过滤非数字字符并更新输入框
            filtered_input = ''.join([c for c in raw_input if c.isdigit()])
            window['-PHONE-'].update(filtered_input)
            window['-ERROR-'].update('⚠️ 只能输入数字!')
        else:
            window['-ERROR-'].update('')
    if event == '提交':
        phone = values['-PHONE-']
        if len(phone) == 11:
            sg.popup(f'有效手机号:{phone}')
        else:
            sg.popup('请输入11位标准手机号')

window.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:12:16