首页 > 解决方案 > 如何根据需要设置输入文本pysimplegui

问题描述

我有一个布局和一个输入文本,我希望输入文本不要留空 我已经搜索了所有 PySimpleGUI 文档,但没有看到如何根据需要设置输入文本

这是我的代码

layout = [[sg.Text('enter your license code')],
              [sg.InputText()], # I wan't this input to be required
              [sg.Submit('OK'), sg.Cancel('Cancel')]]
    window = sg.Window('invalid License', layout, icon="logo.ico")
    while True:
        event, values = window.read()
        if event == 'Cancel' or event == sg.WIN_CLOSED:
            break  # exit button clicked
    window.close()
    license_input = values[0]
    read_configs('license.txt')
    lic = "license.txt"
    with open(lic, 'r+') as f:
        text = f.read()
        text = re.sub(license_code, license_input, text)
        f.seek(0)
        f.write(text)
        f.truncate()

标签: pythonpysimplegui

解决方案


弹出窗口所需的 license_code

  • “取消”按钮不需要并已删除
  • 窗口的“关闭”按钮被禁用enable_close_attempted_event=True且未sg.WINDOW_CLOSE_ATTEMPTED_EVENT处理,否则在单击“关闭”按钮时会先销毁窗口。
  • 通过方法读取并返回输入元素的当前值get,或者使用values[element]窗口事件的 if not 'Close' 按钮。
  • 仅当输入元素的值不是空字符串时才中断事件循环。
import PySimpleGUI as sg

layout = [
    [sg.Text('enter your license code')],
    [sg.InputText(key='-INPUT-')],
    [sg.Submit('OK')],
]
window = sg.Window('invalid License',
    layout,
    #icon="logo.ico",
    enable_close_attempted_event=True)

while True:
    event, values = window.read()
    print(event, values)
    license_code = window['-INPUT-'].get().strip()
    if event == 'OK' and license_code:
        break

window.close()
print(license_code)

推荐阅读