PySimpleGui使用按钮事件更新字典



python新手,正在做一个学校项目

接口

我有一个界面,可以注册每个学生的各种科目的结果,我想寻求帮助,了解我的事件循环应该如何在单击提交按钮后将结果更新到我的词典中。

import PySimpleGUI as sg

GradesDictionary = {
"Albedeo": {"English":None, "Math":None, "Chinese":None},
"Barbara": {"English":None, "Math":None, "Chinese":None},
"Chongyun": {"English":None, "Math":None, "Chinese":None}
}
subjects = ["English", "Math", 'Science', "Chinese"]
studentNames =['Albedo', 'Barbara', 'Chongyun']
resultsLayout = [[sg.Combo(studentNames, enable_events=True, key='current_student')],
# creates a dropdown window with the student names
[sg.Text("Name:"), sg.Text('', key='current_name', enable_events=True)],
# displays the name of the selected student
[sg.Text('English'), sg.InputText(do_not_clear=False)],  # standard input boxes for the score
[sg.Text('Math'), sg.InputText(do_not_clear=False)],
[sg.Text('Science'), sg.InputText(do_not_clear=False)],
[sg.Text('Chinese'), sg.InputText(do_not_clear=False)],
[sg.B("Submit"), sg.Cancel()]]  # standard button to submit score and leave window
resultsWindow = sg.Window("Register Results", resultsLayout,size=(1000,200),finalize=True,)
while True:
event, values = resultsWindow.read()
if event == "Cancel" or event == sg.WIN_CLOSED:
break
elif event == "current_student":
resultsWindow['current_name'].update(values['current_student'])
elif event == "Submit":
...

只有在提交所选学生名称时才更新词典。

import PySimpleGUI as sg

GradesDictionary = {}
subjects = ["English", "Math", 'Science', "Chinese"]
studentNames =['Albedo', 'Barbara', 'Chongyun']
layout_subjects = [
[sg.Text(subject), sg.Push(), sg.InputText(do_not_clear=False, key=subject)]
for subject in subjects
]
Layout = [
[sg.Text('Select student name'),
sg.Combo(studentNames, enable_events=True, key='current_student')],
[sg.Column(layout_subjects)],
[sg.B("Submit"), sg.Cancel()],  # standard button to submit score and leave window
]
resultsWindow = sg.Window("Register Results", Layout, finalize=True)
while True:
event, values = resultsWindow.read()
if event == "Cancel" or event == sg.WIN_CLOSED:
break
elif event == "Submit":
name = values['current_student']
if name in studentNames:
GradesDictionary[name] = {subject:values[subject] for subject in subjects}
print(GradesDictionary)
resultsWindow.close()

最新更新