我正在尝试使用嵌套事件。当我浏览文件时,仅从完整路径中删除文件名就会触发一个事件,该事件使文件名传输到 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()
但没有用。
有任何想法吗?
谢谢