已有183人关注
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__())
      # 红色输出异常

这是一段类似火车票分析助手的代码,用来显示压缩文件里面的文件。

结果证明我的虚拟报错很成功,显示了这么一条错误:

image.png(文本):

Traceback (most recent call last):
	TypeError: setItem(self, int, int, QTableWidgetItem): argument 3 has unexpected type 'QStandardItem'
进程已结束,退出代码0

想问一下为什么我设置的明明是

QStandardItem

,并且添加了

item: QStandardItem = xxx

,不知道为什么还是报这样奇葩的类型错误。

分享到:
精彩评论 1
game99258
学分:2266 LV10
2022-07-27
沙发

是不是窗口参数设了小数点?要整数

首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照