setstandardbuttons multiple drop and python layout pyqt pyqt4

python - multiple - setstandardbuttons pyqt



Eliminar todo de un marco en pyqt (1)

La ranura deleteLater simplemente programará el objeto para su eliminación. Es decir, el objeto no se eliminará hasta que el control regrese al bucle de evento (lo que generalmente significará después de que la función que se está ejecutando actualmente haya regresado).

Si desea eliminar un objeto inmediatamente , use el módulo sip . Esto debería permitirle eliminar un diseño y todos sus widgets como este:

import sip ... class Window(QtGui.QMainWindow): ... def populateFrame(self): self.deleteLayout(self.frame.layout()) layout = QtGui.QVBoxLayout(self.frame) ... def deleteLayout(self, layout): if layout is not None: while layout.count(): item = layout.takeAt(0) widget = item.widget() if widget is not None: widget.deleteLater() else: self.deleteLayout(item.layout()) sip.delete(layout)

Hay algunos ejemplos de eliminar elementos específicos de un diseño, pero no puedo encontrar nada simplemente borrando todo de un marco.

Usando el diseñador de pyqt, he creado un marco. Luego, usando pyuic4 el archivo se convierte a python. En el programa principal, algunos diseños, elementos y widgets se insertan dinámicamente en el marco. Sin embargo, en realidad no llevo un registro de todos los artículos. En un botón de actualización, quiero eliminar todo lo contenido en el marco y rellenarlo de nuevo.

Mi pregunta es, ¿hay una manera simple de eliminar todo lo que está contenido en un marco, incluidos diseños, widgets y elementos.

A partir de ahora, puedo hacer:

for i in range(len(MyResourceFrame.children())): MyResourceFrame.children()[i].deleteLater()

Sin embargo, tengo un código directamente debajo de eso, y después de la primera población de fotogramas, al hacer clic en repoblar, aparece el error de que un fotograma ya está allí, y luego quita todos los elementos. El segundo clic en repopulate funciona. ¿Tiene esto algo que ver con "Más tarde" queriendo estar fuera del alcance primero o es solo un nombre?