¿Cómo ocultar un diseño en PyQt?

Mi código contiene un diseño de cuadro vertical que es una combinación de un diseño de cuadro vertical a la izquierda y otro a la derecha. Me preguntaba si hay una manera de ocultar el diseño de la izquierda con todos sus widgets cuando se emite una determinada señal.

Podría hacer trampa y usar un marco en lugar de un diseño: funciona exactamente de la misma manera, excepto por el hecho de que debe establecer un diseño en el marco para que funcione correctamente. A continuación, puede hacer lo siguiente:

from PyQt5 import QtWidgets # create the frame object. frame = QtWidgets.QFrame() # you can do this with any layout - vbox, grid, hbox... # There will not be more than one item in it anyway. ly = QtWidgets.QVBoxLayout() frame.setLayout(ly) # we're assuming here that parent_layout is some outside layout object. parent_layout.addWidget(frame) # hide the frame and its contents frame.hide() # show the frame and its contents frame.show() 

Estaba buscando una solución como esta, espero que esto ayude 🙂

No puede ocultar un diseño, pero puede ocultar un widget.

Así que primero ponga todos los widgets en un widget contenedor. Luego conecte su señal a la ranura setHidden() del widget de contenedor. Su señal debe emitir True o False , dependiendo de si desea ocultar o mostrar los widgets. Alternativamente, puede conectar su señal a una ranura de conmutación simple, como esta:

  def toggleLeftWidget(self): self.leftWidget.setHidden(not self.leftWidget.isHidden()) 

En cuyo caso, no importaría lo que emitiera su señal.