我正在尝试使用PYQT5文件选择器,但有些东西我不见了。我有两个问题。第一个是文件对话框打开后我选择了一个文件。整个程序崩溃了,我得到终端显示的AttributeError: 'list' object has no attribute 'seek'
和QWaitCondition: Destroyed while threads are still waiting
。第二个是当我在文件对话框上点击取消时整个程序崩溃,它显示nboundLocalError: local variable 'newdata' referenced before assignment
和QWaitCondition: Destroyed while threads are still waiting
。我想要的是能够弹出对话框并选择文件,然后将该文件的内容加载到该变量中。我不确定出了什么问题。我在下面发布了我当前的代码。非常感谢任何建议或帮助。
def open(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
try:
fileToOpen = QFileDialog.getOpenFileNames(self,"Open File", "","All Files (*);;Python Files (*.py)", options=options)
except:
pass
pdb.set_trace()
if fileToOpen:
with ZipFile(fileToOpen, 'r') as myzip:
json_data_read = myzip.read('digest.json')
newdata = json.loads(json_data_read)
Functions.Loads = newdata[1]
答案 0 :(得分:1)
getOpenFilename
返回一个元组。你想要第二个返回值,所以称之为
fileToOpen, _ = getOpenFilename(...)
这是因为pyqt5调用getOpenFilenameAndFilter:http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html#qfiledialog
第二个问题是因为如果没有文件名,你就不会初始化newData
。