Pregunta

Estoy trabajando con Qtdesigner, tengo un Qtabwidget y dentro de cada pestaña Tengo un widget qtable, usando un cuadrícula para hacer que la tabla se ajuste a la pestaña.

Estoy llenando la primera pestaña / tabla como esta:

self.ui.tableWidget.setColumnCount(ncols)
self.ui.tableWidget.setRowCount(nrows)

myrows = [row.fetch_all_fields() for row in tab]
for i, row in enumerate(myrows):
    for j, col in enumerate(row):
                item = QTableWidgetItem(str(col))
                self.ui.tableWidget.setItem(i, j, item)
                QApplication.instance().processEvents()

Esto funciona muy bien, la primera vez que el usuario presiona un botón, este código se ejecuta, y se llena la tabla dentro de la primera pestaña.

Pero, la idea es que, cada vez que el usuario presta el botón, se crea una nueva pestaña / tabla con los datos solicitados, el problema es que, como muchos de ustedes pueden haber adivinado, funciona la primera vez, funciona. Pero después de la primera vez, la segunda pestaña contiene una segunda tabla que ya no se llama self.ui.tableWidget, se llama otra cosa como, self.ui.tableWidget_2 y luego, por supuesto, el código ya no funciona.

Entonces, la pregunta es cómo hacerlo dinámicamente, quiero decir, cada vez que se presiona un botón, se debe crear una nueva pestaña / tabla, y el código anterior debe reutilizarse cada vez que complete la nueva tabla creada.

¿Sería posible? Agradecería cualquier idea o sugerencia sobre cómo hacerlo.

¿Fue útil?

Solución

Si configura todo en QT Designer, entonces su widget de pestaña tendrá un widget (página) para cada pestaña, y cada página contendrá un widget de tabla.

el qtabwidget.widget.widget método puede acceder al widget (Página) para cada pestaña por índice.Y puede usar qobject.findchild para obtener el widget de la tablaLa página contiene:

    page = self.ui.tabWidget.widget(index)
    tablewidget = page.findChild(QTableWidget)

Entonces, esto le permitirá acceder a cualquier tipo de widget de mesa por índice, en lugar de tener que conocer un nombre de atributo específico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top