首页上一页 1 下一页尾页 1 条记录 1/1页
Qt显示列表不出来
发表在Python图书答疑
2022-01-18 悬赏:5 学分
《零基础学Python-3.8》第14章 网络爬虫开发 352页-352页
是否精华
是
否
版块置顶:
是
否
class MainWindow(window.Ui_MainWindow, QMainWindow): def open_file(self): """打开文件""" try: self.fileName, self.fileType = QFileDialog.getOpenFileName(None, "打开压缩文件", '\\', '''zip压缩文件(*.zip);;7-zip压缩文件(*.7z);; tar/gz文件(*.tar,*.gz,*.tgz);; 所有压缩文件(*.7z,*.zip,*.tar,*.gz,*.tgz);; 其他文件(可能无法打开)(*.*)'''.replace(',', ' ')) except Exception as e: virtualTraceBack(e) # 模拟报错 if not self.fileName: self.fileName = None # 没有数据 self.fileType = None # 没有类型 return self.fileName # 返回None print(self.fileName) print("zip" in self.fileName) if "zip" in self.fileType: try: self.file = zipfile.ZipFile(self.fileName, 'r') # 打开文件 except Exception as er: QMessageBox.critical(None, "出错了", "错误类型:" + type(er).__name__ + "\n错误原因:" + er.__str__() + "\n请联系作者解决!") # 报错 elif "gz" in self.fileType: try: self.file = gzip.open(self.fileName, 'r') # 是gz文件就用gzip打开 except Exception as er: QMessageBox.critical(None, "出错了", "错误类型:" + type(er).__name__ + "\n错误原因:" + er.__str__() + "\n请联系作者解决!") # 报错 elif "7z" in self.fileType: try: self.file = py7zr.SevenZipFile(self.fileName, mode='r') # 7z打开 except Exception as er: QMessageBox.critical(None, "出错了", "错误类型:" + type(er).__name__ + "\n错误原因:" + er.__str__() + "\n请联系作者解决!") # 报错 self.update_table() def update_table(self): """更新文件表格""" row = 0 _translate = _t.QCoreApplication.translate if "zip" in self.fileType: print("Loading zip file...") # 调试信息:加载中 print(self.file.namelist()) # 调试信息:总列表 try: # 待调整 for i in self.file.namelist(): "遍历文件" l = [i] # 设置列表 rrow = 0 # 初始化行 print(str(row) + '.', i) # 调试信息:文件名 for ii in l: rrow += 1 # 设置行 print(str(rrow) + ".", ii) # 调试信息:对应信息 item: QStandardItem = QStandardItem(ii) # 创建表格内容 self.tableWidget.setItem(row - 1, rrow - 1, item) # 设置项目 except Exception as e: virtualTraceBack(e) # 由于Qt不允许报错,强制显示报错 def virtualTraceback(self, e): """虚拟报错""" sys.stderr.write("Traceback (most recent call last):\n\t" + type(err).__name__ + ": " + err.__str__()) # 红色输出异常
这是一段类似火车票分析助手的代码,用来显示压缩文件里面的文件。
结果证明我的虚拟报错很成功,显示了这么一条错误:
(文本):
Traceback (most recent call last): TypeError: setItem(self, int, int, QTableWidgetItem): argument 3 has unexpected type 'QStandardItem' 进程已结束,退出代码0
想问一下为什么我设置的明明是
QStandardItem
,并且添加了
item: QStandardItem = xxx
,不知道为什么还是报这样奇葩的类型错误。