PyQt QWidget析构函数错误“AttributeError:”NoneType“对象没有属性”“path”`

2024-10-02 22:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用从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'

看起来库在调用析构函数之前就被垃圾回收了。我不知道怎么解决这个问题。在


Tags: 文件path实例函数selfos部件图片
1条回答
网友
1楼 · 发布于 2024-10-02 22:33:59

看看github代码,问题似乎是当小部件关闭时,Qt应用程序终止并系统出口()被调用,因此该模块可能在__del__调用之前被垃圾回收。在

在那里:

if __name__ == '__main__':
    app = QApplication( sys.argv)
    url = "http://www.transfermarkt.co.uk/cristiano-ronaldo/profil/spieler/8198"
    ex = PlayerWindow( url)
    sys.exit( app.exec_())

为了避免这个问题,我建议使用closeEvent(event)表单QWidgethttp://doc.qt.io/qt-5/qwidget.html#closeEvent

将您的__del__函数替换为:

^{pr2}$

作为一般规则,您应该尽量避免使用__del__在代码中显式调用del objectbegin的垃圾回收自动完成对象。在

相关问题 更多 >