método deleteLater() en PyQt5

Al diseñar una aplicación, podría consumir mucho espacio/memoria si no se tiene cuidado al cerrar los widgets. Las clases basadas en QObject están diseñadas para vincularse (opcionalmente) en una jerarquía. Cuando se elimina un objeto de nivel superior, Qt también eliminará automáticamente todos sus objetos secundarios. Sin embargo, al cerrar widgets, la eliminación automática solo ocurrirá si el Qt.WA_DeleteOnClose atributo está configurado (que, de manera predeterminada, generalmente no lo está).

En PyQt5, hay dos aspectos de la propiedad de los objetos: la parte de Python y la parte de Qt . A menudo, eliminar la última referencia de Python a un objeto no será suficiente para limpiarlo por completo, ya que aún podría haber una referencia retenida en el lado de Qt. En general, Qt tiende a no eliminar objetos implícitamente. Entonces, si su aplicación crea y elimina muchos widgets, es posible que deba tomar medidas para eliminarlos explícitamente si el uso de la memoria es una preocupación.

deleteLater()El método nos permite eliminar explícitamente la referencia del widget.

Sintaxis: widget.deleteLater()

Argumento: No requiere argumento.

Acción realizada: Borra/elimina la referencia del widget de la memoria.

Código:

# 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())

Eliminará la referencia asociada con el widget de etiqueta de la memoria.
Producción :
pyqt-deletelater

Publicación traducida automáticamente

Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *