图形用户界面文件选择器

GUI File Picker

我正在尝试使用 PYQT5 文件选择器,但我缺少一些东西。我有两个问题。第一个是文件对话框打开时,我选择了一个文件。整个程序崩溃了,我在终端中显示了 AttributeError: 'list' object has no attribute 'seek'QWaitCondition: Destroyed while threads are still waiting。第二个是当我在文件对话框中点击取消时,整个程序崩溃并显示 nboundLocalError: local variable 'newdata' referenced before assignmentQWaitCondition: 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]

getOpenFilename returns 一个元组。您想要第二个 return 值,所以将其命名为

fileToOpen, _ = getOpenFilename(...)

是因为pyqt5调用了getOpenFilenameAndFilter:http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html#qfiledialog

第二个问题是因为你没有初始化 newData 如果没有文件名。