我使用从QWidget
继承的自定义小部件。这个小部件可能使用一个在线资源:我从internet下载的图片,并存储在本地文件中,然后再将其显示在QLabel
实例中。在
当用户关闭窗口时,我希望删除本地文件,因此我将析构函数更改为:
def __del__(self):
if os.path.isfile( self.pictureFilename):
os.remove( self.pictureFilename)
我有:
^{pr2}$在我剧本的开头。奇怪的是,当主应用程序关闭时,我得到了一个错误:
Traceback (most recent call last):
File "/home/XXX/XXX/XXX.py", line 103, in del
AttributeError: 'NoneType' object has no attribute 'path'
看起来库在调用析构函数之前就被垃圾回收了。我不知道怎么解决这个问题。在
看看github代码,问题似乎是当小部件关闭时,Qt应用程序终止并系统出口()被调用,因此该模块可能在
__del__
调用之前被垃圾回收。在在那里:
为了避免这个问题,我建议使用
closeEvent(event)
表单QWidgethttp://doc.qt.io/qt-5/qwidget.html#closeEvent将您的
^{pr2}$__del__
函数替换为:作为一般规则,您应该尽量避免使用
__del__
在代码中显式调用del object
begin的垃圾回收自动完成对象。在相关问题 更多 >
编程相关推荐