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 :
Publicación traducida automáticamente
Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA