【问题标题】:Update name in inputfield in PySimpleGui在 PySimpleGui 的输入字段中更新名称
【发布时间】:2022-07-07 23:00:43
【问题描述】:

我正在创建一个模板制作工具,它工作正常。我的主管要求我为她和其他几个人制作一个自动填充按钮。如果她要制作模板,只需点击一个按钮,她的名字就会自动填写在输入字段中。

名称输入字段的代码如下所示:

[sg.Text("Name"), sg.InputText(key="NAME", do_not_clear=False)]

“Person-1”模板的按钮如下所示:

[sg.Button('Template Person-1')]

while 循环如下所示:

 while True:
        event, values = spv_window.read()
        if event == sg.WIN_CLOSED or event == "Exit":
            break
        elif event == 'Template Person-1':
            spv_window['NAME'].Update(values['NAME'], 'Person-1')
        elif event == "Maak template":
            doc.render(values)
            output_path = Path(values["-IN-"]) / f"{values['NAME']}-{values['TOPIC']}.docx"
            doc.save(output_path)
            sg.popup("Template gegenereerd", f"zie: {output_path}")

有人可以向我解释发生了什么问题吗?感谢您的宝贵时间!

【问题讨论】:

  • values['NAME'] 用于InputText 元素的内容,如果要更新指定名称的InputText 元素的内容,则不需要。试试spv_window['NAME'].Update('Person-1')

标签: python pysimplegui


【解决方案1】:

用于记住以前输入的值的用户设置

使用“自动填充”按钮的另一种方法是使用最后输入的值填充值。这基本上将为每个人定制 GUI,您需要为每个人制作特殊功能或保存一组特殊设置。

在本例中,“名称”字段默认为最后输入的值。

import PySimpleGUI as sg

layout = [  [sg.Text('My Form')],
            [sg.Text('Name:'), sg.Input(default_text=sg.user_settings_get_entry('-name-', ''), key='-NAME-')],
            [sg.Button('Go'), sg.Button('Exit')]  ]

window = sg.Window('Window Title', layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Exit':
        break
    if event == 'Go':
        # Save the Name entered and use it next time to auto-fill
        sg.user_settings_set_entry('-name-', values['-NAME-'])

window.close()

如果这是一个人不太可能改变的字段,那么每次执行程序时它都会被设置为相同的值。

另一种方法是制作模板。如果你这样做了,那么 PySimpleGUI 用户设置 API 仍然可以方便地实现此功能。

【讨论】:

    猜你喜欢
    • 2012-03-29
    • 2020-05-25
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多