【发布时间】:2017-05-09 16:14:44
【问题描述】:
我正在尝试使用 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]
【问题讨论】:
-
请不要使用
except,除非您期望出现特定的异常,并且不要只是忽略该异常。在显示的代码中,以这种方式处理的异常(未)只会导致后续异常,因为未定义fileToOpen。这导致UnboundLocalError。 -
@BlackJack,谢谢你的解释。我实际上遇到了这个错误,并在这篇文章之后修复了它。感谢您的评论,因为我一直在努力改进我的编码实践。
标签: python python-3.x pyqt pyqt5 openfiledialog