He logrado poblar un QTableWidget con datos almacenados en una base de datos con el código siguiente:
self.cur.execute("""SELECT column1, column2, column3, column4 from schema.table WHERE column1 IN ('""" + str(self.dlg.mComboBox.currentText()) + """') AND column2 >= '""" + str(self.dlg.mDateTimeEdit.dateTime().toString("yyyyMMdd")) + """' AND column2 <= '""" + str(self.dlg.mDateTimeEdit_2.dateTime().toString("yyyyMMdd")) + """' """)
self.dlg.tableWidget.setRowCount(0)
self.dlg.tableWidget.setColumnCount(4)
for row_number, row_data in enumerate(self.cur):
self.dlg.tableWidget.insertRow(row_number)
for column_number, data in enumerate(row_data):
self.dlg.tableWidget.setItem(row_number, column_number, QTableWidgetItem(str(data)))
Pensé que podría hacer lo mismo con datos CSV, pero en realidad estoy teniendo problemas para mostrar los datos de mi archivo CSV en el qtableview.
¿Cómo puedo abordar esto? No he podido resolver mi problema con los pocos temas relativos que encontré en StackExchange todavía.
Último intento aquí:
with open('C:/Users/user/AppData/Roaming/QGIS/QGIS3/profiles/default/python/plugins/plugin_test/file.csv', 'rb') as stream:
self.dlg.tableWidget_2.setRowCount(0)
self.dlg.tableWidget_2.setColumnCount(0)
for rowdata in csv.reader(stream):
row = self.dlg.tableWidget_2.rowCount()
self.dlg.tableWidget_2.insertRow(row)
self.dlg.tableWidget_2.setColumnCount(len(rowdata))
for column, data in enumerate(rowdata):
item = QtGui.QTableWidgetItem(data.decode('utf8'))
self.dlg.tableWidget_2.setItem(row, column, item)
Con este último código, no recibo ningún mensaje de advertencia de QGIS, pero tampoco sucede nada