我正在尝试使用嵌套事件。当我浏览文件时,仅从完整路径中删除文件名就会触发一个事件,该事件使文件名传输到 enable_events 设置为 true 的文本框,这将触发另一个事件来调用函数并获取 pdf 详细信息.
如果我启用两个注释行,您可以看到该函数工作并传输返回值,但我试图将这两个事件分开,因为获取 PDF 详细信息的函数需要一段时间。
所以顺序是:
__pdfpath__获取某个浏览文件的完整路径,该文件触发将文件名传输到__bookfilename__的事件,该事件应触发另一个事件,该事件将调用将其响应发送到__pdfdetails__的函数
将 PySimpleGUI 导入为 sg
导入操作系统
def get_pdf_details(pdfname):
return pdfname + '已处理'
布局 = [
[sg.InputText('',key='_pdfpath_',enable_events=True),sg.FileBrowse(key='_filepath_')],
[sg.Text('',key='_bookfilename_',enable_events=True,size=(40, 1))],
[sg.Text('',key='_pdfdetails_', size=(40, 1) )],
]
window = sg.Window('', 布局)
而真:
事件,值 = window.Read()
如果事件 == '_pdfpath_':
文件名 = os.path.basename(值['_pdfpath_'])
window.Element('_bookfilename_').Update(文件名)
#response = get_pdf_details(文件名)
#window.Element('_pdfdetails_').Update(响应)
如果事件 == '_bookfilename_':
response = get_pdfdetails(value['_bookfilename_'])
window.Element('_pdfdetails_').Update(响应)
那么问题来了,如何触发第二个事件呢?
我尝试创建第二个window.Read()来创建第二个循环,如下所示:
event2, value2 = window.Read()
但没有用。
有任何想法吗?
谢谢
