python - PysimpleGUI 无法读取 sg.WIN_CLOSED 事件中的 inputFields
问题描述
我想在关闭应用程序时使用 -PATH- 和 -FILENAME- 键从输入字段中保存路径和文件名,因此如果我更改文件名和路径,它将保存在文本文件中并在下一个加载开始。但是,当我尝试在 sg.WIN_CLOSED 事件中读取 inputText '-FILENAME-' 时,我得到 'NoneType' object is not subscribable TypeError,但如果我使用相同的方式 x = values['-FILENAME-'] 在 -另存为-事件它工作得很好并在控制台中打印文件名
任何帮助表示赞赏!
#create Window
window = sg.Window('Digispark BADUSB Script Creator', layout, size=(1500, 500))
#Eventloop
while True:
event, values = window.read()
if event == 'EXIT' or event == sg.WIN_CLOSED:
print(values['-PATH-'])
break
if event == '-SAVEAS-':
codeText = values['textbox']
completeText = textBegin + codeText +textEnd
filename = values['-FILENAME-']
path = values['-PATH-']
if len(filename) == 0 or len(path) == 0:
errorPopup('Filename or Path empty! Go to SETTINGS-TAB!')
else:
try:
destination = path + filename
file1 = open(destination, 'w')
file1.write(completeText)
file1.close()
except:
errorPopup("Invalid Path! Change Settings")
window.close()
解决方案
您的代码太长,无法阅读。
当单击事件窗口关闭按钮时,它被定义为销毁窗口,您可能会或不会从该窗口中得到任何东西。大多数时候, 的值为,因此您无法从中读取元素的values
内容。None
sg.Input
enable_close_attempted_event=True
如果你想在窗口关闭之前做一些事情,尝试使用选项sg.Window
,那么它不会首先破坏窗口。
演示代码如下,
import PySimpleGUI as sg
sg.theme("DarkBlue3")
font = ('Arial', 10)
defaultPath = "Here's your default path"
defaultFilename = "Here's your default filanme"
layout = [
[sg.Text('Path:', size=(10,1)), sg.InputText(defaultPath, key='-PATH-')],
[sg.Text('Filename:', size=(10,1)), sg.InputText(defaultFilename, key='-FILENAME-')]
]
window = sg.Window('Test1', layout, resizable=True, finalize=True, enable_close_attempted_event=True)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSE_ATTEMPTED_EVENT:
print(values['-PATH-'])
print(values['-FILENAME-'])
break
window.close()
推荐阅读
- c# - NT AUTHORITY\Local 服务未列在目录的访问控制列表中
- cmake - 为静态库用户提供源文件夹外的包含目录
- c# - 有没有办法找到未等待的任务?
- sql - 使用 SQL Developer 连接到 Oracle 12C 数据库服务器 (12.2.0)
- ios - 为 TableView Cell 设置值时出现致命错误
- swiftui - SwiftUI 如何创建一个将项目添加到包含导航链接的列表的按钮
- ios - swift ios 13 屏幕亮度问题
- .net - Can we mix different request type together in one method?
- r - R: How to aggregate several data frames into a txt file via for loop?
- excel - 多个从属组合框Excel VBA