我有一个具有多个输入和组合选择框的窗口,如下所示
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/