python - 检查所有输入是否在 pysimplegui 中都有值

标签 python pysimplegui

我有一个具有多个输入和组合选择框的窗口,如下所示

main_layout = [[sg.Text('First Name', size=(15, 1)),
  sg.InputText(key='gname', size=(25, 1))],
  [sg.Text('V Type', size=(15, 1)),
  sg.Combo(['option 1','option 2','option 3'],key="vtype",size=(25, 1)],
  [sg.Text('Last Name', size=(15, 1)),
  sg.InputText(key='glastname', size=(25, 1)],
  [sg.Submit('Submit'),sg.Cancel('Cancel')]]
layout = [[sg.Column(main_layout,scrollable=True,vertical_scroll_only=True, size=(755,500))]]
window = sg.Window('Form', layout, font='arial',resizable=True, element_justification='l',size=(755,500))
event, values = window.read()
    if event == 'Cancel' or event == sg.WIN_CLOSED:
        sys.exit()
    name_check = window['gname'].get().strip()
    if name_check == '':
        sg.popup(f"Field is Required")
    window.close()

我已经使用 name_check = window['gname'].get().strip() 作为名称事件,检查它不是空白,我想要做的是单击提交检查所有输入是否有值而不是空白,因为上面的代码是一个表单,而且表单很长,例如我只写了其中的几个

表单数据将使用正则表达式写入文本文件,如果该值为空,应用程序就会崩溃,所以我想要一些可以一次检查多个事件键的东西 我怎样才能做到这一点?

最佳答案

使用 window.key_dict 获取包含所有元素的所有 key:element 对的字典,然后迭代每个项目以确认它是否是 sg.Input 元素,以及所有输入都不是空字符串。

import PySimpleGUI as sg

sg.theme("DarkBlue3")
sg.set_options(font=("Courier New", 12))

layout = [
    [sg.Text(f"Line {i: >2d}:"), sg.Input("")] for i in range(10)] + [
    [sg.Button("Submit")],
    [sg.StatusBar("", size=(20, 1), key='Status')]
]

window = sg.Window('Title', layout, finalize=True)
prompt = window['Status'].update
input_key_list = [key for key, value in window.key_dict.items()
    if isinstance(value, sg.Input)]
while True:

    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    elif event == "Submit":
        if all(map(str.strip, [values[key] for key in input_key_list])):
            prompt("All inputs are OK !")
        else:
            prompt("Some inputs missed !")

window.close()

关于python - 检查所有输入是否在 pysimplegui 中都有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68602498/

相关文章:

python - python的字符串格式中的冒号是什么意思?

python - 如何使用 while 循环 PySimpleGUI 中的键获取日历按钮的值?

python - Pysimplegui 文本元素变量和固定文本

python - 可执行构建闪烁并终止

python - 在 Python 中使用正则表达式将一个字符串替换为另一个字符串 : Error: re. 错误:位置 0 处的错误转义\w

python - 如何仅对一列进行分组并对其他列进行求和,而对 pandas 的其余部分不执行任何操作?

python - 使用 python 导入处理复杂的目录结构

python - 有没有办法使用 Python 的 PySimpleGUI 中的键获取输入?

python-3.x - 如何在窗口中实时更新打印文本?

python - 在 numpy 的 4 维矩阵中插入非对齐元素