es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo eliminar una tabla del diseño en PyQt

Estoy tratando de encontrar una forma de cambiar entre tablas que se cargan desde SQL. Quiero eliminar completamente una tabla de la página antes de cargar la siguiente.
¡Gracias!

class DisplayLog(QWidget):
    def __init__(self, parent=None):
        super(DisplayLog, self).__init__(parent)
        self.layout = QGridLayout()

        self.inTbl = QTableView()
        self.outTbl = QTableView()

        # push button 2
        IncomingButton = UIFunctions._AddButton("Mostrar Entrantes")
        OutgoingButton = UIFunctions._AddButton("Mostrar Salientes")
        PaintButton = UIFunctions._AddButton("Mostrar Pintura")
        IncomingButton.clicked.connect(self.incoming_display)  # Llamar función al hacer clic
        OutgoingButton.clicked.connect(self.outgoing_display)  # Llamar función al hacer clic

        self.layout.addWidget(IncomingButton, 0, 0)
        self.layout.addWidget(OutgoingButton, 0, 1)
        self.layout.addWidget(PaintButton, 0, 2)

        self.setLayout(self.layout)

    def incoming_display(self):
        if createConnection():
            sql = 'SELECT * FROM IncomingCoilTable'
            self.inTbl = displayData(sql)
            self.layout.addWidget(self.inTbl, 1, 1)

    def outgoing_display(self):
        self.layout.removeWidget(self.inTbl)

“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para eliminar por completo una tabla de la página antes de cargar la siguiente, puedes usar la función removeWidget() para eliminar la tabla del diseño, y luego asignar la variable que contiene la tabla a None para liberar sus recursos. Aquí tienes una función outgoing_display() actualizada que elimina la tabla inTbl antes de cargar la tabla outTbl:

    def outgoing_display(self):
        self.layout.removeWidget(self.inTbl)
        self.inTbl = None
        if createConnection():
            sql = 'SELECT * FROM OutgoingCoilTable'
            self.outTbl = displayData(sql)
            self.layout.addWidget(self.outTbl, 1, 1)
    

    Ten en cuenta que establecemos self.inTbl a None para liberar sus recursos y que pueda ser eliminado por completo de la memoria. Puedes hacer lo mismo con self.outTbl si es necesario.

Comments are closed.