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).