我创建了简单的GUI,如下所示。在这个示例中,只包含了三行,但是可以将相同的原则应用于更多行。我希望填充GUI中的所有或相同的行并保存它,但最重要的是,当将保存的文件加载回时,应该只显示已填充的行(而不是全部)。我试过往下走,但没有成功。
import PySimpleGUI as sg
from datetime import datetime
import base64
from pathlib import Path
import webbrowser
sg.theme('DarkTeal9')
layout_1 = [[sg.InputText("", key="-IT2-", font='Arial 9', size=(10,1)),
sg.Combo(["Item1", "Item2", "Item3"],size=(20,1), key='-TEST2-', font='Arial 9'),
sg.CalendarButton("", close_when_date_chosen=True, target='-IN2-', font='Arial 9', no_titlebar=False, format='%d-%b-%Y'),
sg.InputText("", key='-IN2-', size=(20,1), font='Arial 9')]]
layout_a = [[sg.Button("row 2")]]
layout_2 = [[sg.InputText("", key="-IT3-", font='Arial 9', size=(10,1)),
sg.Combo(["Item1", "Item2", "Item3"],size=(20,1), key='-TEST3-', font='Arial 9'),
sg.CalendarButton("", close_when_date_chosen=True, target='-IN3-', font='Arial 9', no_titlebar=False, format='%d-%b-%Y'),
sg.InputText("", key='-IN3-', size=(20,1), font='Arial 9')]]
layout_b =[[sg.Button("row 3")]]
layout_3 = [[sg.InputText("", key="-IT4-", font='Arial 9', size=(10,1), visible=True),
sg.Combo(["Item1", "Item2", "Item3"],size=(20,1), key='-TEST4-', font='Arial 9'),
sg.CalendarButton("", close_when_date_chosen=True, target='-IN4-', font='Arial 9', no_titlebar=False, format='%d-%b-%Y'),
sg.InputText("", key='-IN4-', size=(20,1), font='Arial 9', justification="c")]]
layout = [
[sg.Column(layout_1, key='-LAY1-'), sg.Column(layout_a, visible=True, key="-LAYA-")],
[sg.Column(layout_2, visible=False, key='-LAY2-'), sg.Column(layout_b, visible=False, key='-LAYB-')],
[sg.Column(layout_3, visible=False, key='-LAY3-')],
[sg.Button ("Save"), sg.Button ("Load"), sg.Button('Exit'),],
]
window = sg.Window("", layout)
while True:
event, values = window.read()
if event == 'Save':
file_name = sg.popup_get_file("Save", save_as=True, no_window=True)
window.SaveToDisk(file_name)
if event == 'Load':
file_name = sg.popup_get_file('Load', no_window=True)
window.LoadFromDisk(file_name)
if values["-IT2-"] != "":
window[f'-LAY1-'].update(visible=True)
window[f'-LAYA-'].update(visible=False)
if values ["-IT3-"] != "":
window[f'-LAY2-'].update(visible=True)
if values["-IT4-"] != "":
window[f'-LAY3-'].update(visible=True)
if event == sg.WIN_CLOSED or event == 'Exit':
break
window.close()
if event == 'row 2':
window[f'-LAY2-'].update(visible=True)
window[f'-LAYA-'].update(visible=False)
window[f'-LAYB-'].update(visible=True)
layout = str(event)
if event == 'row 3':
window[f'-LAY3-'].update(visible=True)
window[f'-LAYB-'].update(visible=False)
layout = str(event)
window.close()
发布于 2022-09-13 09:07:19
试试看
if event == 'Load':
file_name = sg.popup_get_file('Load', no_window=True)
window.LoadFromDisk(file_name)
v1, v2, v3 = window["-IT2-"].get(), window["-IT3-"].get(), window["-IT4-"].get()
if v1:
window[f'-LAY1-'].update(visible=True)
window[f'-LAYA-'].update(visible=False)
if v2:
window[f'-LAY2-'].update(visible=True)
if v3:
window[f'-LAY3-'].update(visible=True)
https://stackoverflow.com/questions/73700091
复制相似问题