Tengo un widget QGroupBox
con elementos secundarios que quiero eliminar. ¿Cómo puedo hacer eso? No puedo encontrar removeWidget
, removeChild
, removeItem
, o algo similar en the docs. Solo puedo ver cómo eliminar elementos de un diseño, pero eso, al parecer, no lo elimina del widget real.pyqt: cómo eliminar un widget?
Respuesta
Bueno, esto funciona: en el widget Quiero eliminar, llamar 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.
Debe comprender que un widget se crea de todos modos, ya sea que lo coloque en un diseño o no, y tiene un padre. Un diseño solo es responsable de organizarlo en la pantalla, no es un método confiable o incluso utilizable para mostrar y ocultar widgets –
No veo una manera de agregar o quitar un widget (cualquier función de agregar/quitar widget) excepto por el diseños. agregar el widget a un diseño parece hacer que se muestre (lo que realmente hace es establecer el elemento primario del widget en el contenedor para el que está el diseño). esperaría que quitar ese mismo widget del mismo diseño hiciera que no se muestre (es decir, ponerlo nuevamente en el mismo estado que antes lo agregué al diseño). pero la única forma de hacerlo parece ser establecer el padre del widget en Ninguno ... que no es simétrico en absoluto. – Claudiu
bueno, puedes usar el método 'removeChild' del padre, pero es mejor' ocultar' –
¿Seguro que quiere borrar realmente el widget? ¿No lo hará hide
? En mi humilde opinión el método aceptado está utilizando show
/hide
para hacer los widgets aparecen y desaparecen de la vista del usuario.
Una alternativa es usar QStackedWidget
sí; [Ver aquí] (http://stackoverflow.com/questions/5889705/pyqt-how-to-remove-elements-from-a-qvboxlayout/5890555#5890555). aunque supongo que esconderse podría funcionar también – Claudiu
@Claidiu: si eso es lo que quieres, creo que la respuesta te da la solución –
@Eli: la respuesta no me dice cómo quitar realmente el widget del padre, que es lo que estaba preguntando aquí. – Claudiu
Si tu widget no tiene widgets hijos que dependen de ella creo que se puede utilizar:
layout.removeWidget(self.widget_name)
self.widget_name.deleteLater()
self.widget_name = None
en mis pruebas, cuando se trata de un widget que tiene niño que tienes que:
import sip
layout.removeWidget(self.widget_name)
sip.delete(self.widget_name)
self.widget_name = None
Si usted no tiene un nombre de variable para el widget en la clase o nivel mundial todavía se puede quitar de diseño con layout.takeAt (índice) y obtener el puntero del widget de la QLayoutItem funciona este método devuelve con QLayoutItem.widget(), en ese caso no necesita asignarle a None el nombre de la variable porque no es referenciado fuera de tu 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).
- 1. Promover PyQt Widget
- 2. PyQt: cómo agregar un widget de IU separado a QMainWindow
- 3. PyQt: eliminar columnas innecesarias
- 4. Python - PyQt - Widget de QTalta - agregando filas
- 5. ¿Eliminar QTreeWidgetItem en PyQt?
- 6. dibujo de pyqt en un widget existente de GUI
- 7. PyQt: ¿cómo obtener el nivel superior padre del widget dado?
- 8. PySide: Eliminar un widget de un diseño
- 9. ¿Cómo eliminar un diseño ya existente en un widget?
- 10. Cómo incrustar un intérprete de Python en un widget de PyQT
- 11. pyqt: recibir señal cuando el widget se vuelve visible/oculto
- 12. Establecer un ancho inicial de un widget pyqt en un divisor
- 13. Qt/PyQt: ¿Cómo creo un widget desplegable, como QLabel, QTextBrowser, etc.?
- 14. ¿Cómo hacer un widget en el centro de la pantalla en PySide/PyQt?
- 15. Reemplazando QPaintEvents en PyQt
- 16. PyQt4 - Eliminar Widget de artículo de QListWidget
- 17. ¿Eliminar Widget de Muelle en Qt Designer?
- 18. Cómo depurar aplicaciones PyQt sin relanzar?
- 19. Arrastrando/moviendo un QPushButton en PyQt
- 20. Cómo implementar un botón simple en PyQt
- 21. Enfoque en un QDockWidget tabulado en PyQt
- 22. PyQt: ¿Cómo visualizo una imagen correctamente?
- 23. Cómo deshabilitar un widget "dijit.form.FilteringSelect"?
- 24. shaders Compilar en PyQt
- 25. agregando y eliminando widgets dinámicamente en PyQt
- 26. ¿Cómo construir el proyecto PyQT?
- 27. PEP8 y PyQt, cómo conciliar
- 28. Simulando un evento de clic de mouse en PyQt
- 29. PyQt, haga clic en la acción Qwidget
- 30. tkinter en un widget
¿Está buscando _just_ eliminar el widget de QGroupBox, o desea eliminar el widget por completo? –
@Alex: elimínelo por completo – Claudiu