📜  PyQt5 中的 deleteLater() 方法

📅  最后修改于: 2022-05-13 01:54:51.007000             🧑  作者: Mango

PyQt5 中的 deleteLater() 方法

在设计应用程序时,如果关闭小部件时不小心,它可能会消耗大量空间/内存。基于 QObject 的类被设计为(可选地)在层次结构中链接在一起。当一个顶级对象被删除时,Qt 也会自动删除它的所有子对象。但是,当关闭小部件时,只有在设置了Qt.WA_DeleteOnClose属性时才会发生自动删除(默认情况下通常不设置)。

在 PyQt5 中,对象所有权有两个方面: Python部分Qt 部分。通常,删除对对象的最后一个Python引用不足以完全清理,因为在 Qt 端可能仍然存在引用。一般来说,Qt 不会隐式删除对象。因此,如果您的应用程序创建和删除大量小部件,如果内存使用是一个问题,您可能需要采取措施明确删除它们。

deleteLater()方法允许我们显式删除小部件的引用。

代码 :

# importing the required libraries
  
from PyQt5.QtWidgets import * 
from PyQt5 import QtCore
from PyQt5 import QtGui
import sys
  
  
  
class Window(QMainWindow):
    def __init__(self):
        super().__init__()
  
        # set the title
        self.setWindowTitle("Memory")
  
        # setting  the geometry of window
        self.setGeometry(0, 0, 400, 300)
  
        # creating a label widget
        self.label_1 = QLabel("Label", self)
  
        # moving position
        self.label_1.move(100, 100)
  
        # setting up border
        self.label_1.setStyleSheet("border: 1px solid black;")
  
        # delete reference
        self.label_1.deleteLater()
  
        # show all the widgets
        self.show()
  
  
  
# create pyqt5 app
App = QApplication(sys.argv)
  
# create the instance of our Window
window = Window()
  
# start the app
sys.exit(App.exec())

它将从内存中删除与标签小部件关联的引用。
输出 :
pyqt 删除器