python - 如何根据需要设置输入文本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()
解决方案
弹出窗口所需的 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)
推荐阅读
- sql - 将列转换为行值的表转置
- node.js - Angular Universal - 服务器和客户端中的不同 URL 类
- android - 如何使用嵌套的 Json 数组响应解析 Json 对象
- regex - 正则表达式模式不匹配
- java - IndexOutOfBoundsException error while trying to print first 4 elements of an ArrayList
- bash - 即使 `bashrc` 中存在路径,也无法运行路径中的任何文件
- node.js - 尝试在 docker 容器中运行 composer-rest-server 时出现节点 EACCESS 错误
- python - Python Gurobi:无法向模型添加约束
- go - 在 Golang 中比较两张地图
- angular - 悬停一个项目以显示特定于它的 div