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

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

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.