tutorial español creator python qt widget pyqt

python - español - qt designer



pyqt: cómo eliminar un widget? (3)

¿Seguro que quieres eliminar el widget? No se hide ? En mi humilde opinión, el método aceptado es usar show / hide para hacer que los widgets aparezcan y desaparezcan de la vista del usuario.

Una alternativa es usar QStackedWidget

Tengo un widget QGroupBox con elementos QGroupBox que quiero eliminar. ¿Cómo puedo hacer eso? No puedo encontrar removeWidget , removeChild , removeItem ni nada similar en los documentos . Solo puedo ver cómo eliminar elementos de un diseño, pero eso, al parecer, no lo elimina del widget real.


Bueno, esto funciona: en el widget que quiero eliminar, llame a widget.setParent(None) . Me gusta cómo agregar un diseño agrega un widget al contenedor, pero eliminarlo de un diseño no ... es algo divertido.


Si su widget no tiene widgets secundarios que dependan de él, creo que puede usar:

layout.removeWidget(self.widget_name) self.widget_name.deleteLater() self.widget_name = None

en mis pruebas cuando es un widget que tiene hijos tienes que:

import sip layout.removeWidget(self.widget_name) sip.delete(self.widget_name) self.widget_name = None

si no tiene un nombre de variable para el widget en clase o nivel global, aún puede eliminar del diseño con layout.takeAt (index) y obtener el puntero del widget desde QLayoutItem, esta función regresa con el método QLayoutItem.widget (), en en ese caso, no es necesario asignarle a None el nombre de la variable porque no está referenciado fuera de su función.

Pruebe ambos métodos y vea lo que funciona para usted (no pierda la memoria después de repetir un buen montón de veces).