【问题标题】:Verifying user input is integer or empty with PySimpleGUI使用 PySimpleGUI 验证用户输入是整数还是空
【发布时间】:2021-05-07 08:18:00
【问题描述】:

我需要确保使用 pysimplegui 在文本框中输入的用户输入是整数或空。为此,我遵循以下方法:

import PySimpleGUI as sg

sg.theme('SandyBeach')

layout = [
    [sg.Text('Please enter your Phone')],

    [sg.Text('Phone', size=(15, 1)), sg.InputText(key="lp1")],
    [sg.Button("e"), sg.Quit()]
]
window = sg.Window('Simple data entry window', layout)
while True:

    event, values = window.read()

    if event == "e":
        height = int(values['lp1'])
        print(type(height))


        if height == "" or type(height) == int:
            print("s")
        else:
            print("n")

    if event in [sg.WINDOW_CLOSED, "Quit"]:
        break


window.close()
 

这里的问题是,如果我输入 height = int(values['lp1']) 并将输入留空,我会得到 ValueError:

以 10 为底的 int() 的无效文字:'223d'

如果我让height = height = values['lp1'] 高度类型是str

当输入字符串时,预期的输出也应该是 n。 请建议如何纠正它。

【问题讨论】:

    标签: python python-3.x pysimplegui


    【解决方案1】:

    如果您使用不是整数格式字符串的参数调用int,您将收到异常。

    示例代码如下

    import PySimpleGUI as sg
    
    sg.theme('SandyBeach')
    
    layout = [
        [sg.Text('Please enter your Phone')],
        [sg.Text('Phone', size=(15, 1)), sg.InputText(key="lp1")],
        [sg.Button("e"), sg.Quit()]
    ]
    window = sg.Window('Simple data entry window', layout)
    while True:
    
        event, values = window.read()
    
        if event in (sg.WINDOW_CLOSED, "Quit"):
            break
        elif event == "e":
            text = values['lp1']
            if text == '':
                print('Null string')
            else:
                try:
                    value = int(text)
                    print(f'Integer: {value}')
                except:
                    print("Not Integer")
    
    window.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-20
      • 2015-06-09
      • 1970-01-01
      • 2023-03-04
      • 2020-07-19
      • 1970-01-01
      • 2012-02-05
      • 2012-02-28
      相关资源
      最近更新 更多