You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5自定义文件浏览器二次打开后随机崩溃问题求助

PyQt5自定义按需加载文件浏览器二次打开崩溃问题解决

问题背景

为满足完全自定义需求,基于QTreeView、QStandardItemModel和QStandardItem实现了按需加载目录的文件浏览器(未使用QFileSystemModel)。首次打开包含该浏览器的工具窗口时功能正常,但二次打开后,展开若干目录项会随机触发崩溃,退出代码为-1073740791 (0xC0000409)。

崩溃定位

经排查,崩溃触发点在add_subdirectories方法的item.appendRows(items)代码行,底层抛出异常:

RuntimeError: wrapped C/C++ object of type QStandardItem has been deleted

该文件浏览器嵌入在主应用的二级QMainWindow的QFrame容器中。

无效尝试

已尝试以下方案但未解决问题:

  • 子类化QStandardItemModel和QStandardItem
  • 在关键代码处捕获异常
  • 对模型索引进行有效性验证

最终解决方法

通过以下三处修改彻底解决崩溃问题:

  • 移除独立的wOpen函数,将工具窗口的创建与显示逻辑直接移至按钮点击的槽函数中
  • 在主窗口MainWindow类中添加属性,用于存储工具窗口的引用,避免窗口对象被Python垃圾回收机制意外回收
  • 将TrashButton组件中原来的destroy和close调用替换为deleteLater()方法,确保Qt C++对象按框架规定的生命周期流程销毁

内容的提问来源于stack exchange,提问作者MRCSTD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:14:56