I am trying to write a function to delete a field using plugin in QGIS 3.24. I have build a plugin , which consists of QgsFieldComboBox. So I can select a field from the combo box to delete (from the layer selected), take it as input and delete it. Here is the plugin -
Here is the code -
def delete_field(self): layer = self.dlg.cb_layer.currentLayer()
#HERE WE ARE TAKING THE INPUT OF FIELD SELECTED IN COMBOBOX #delField_cb is the object of the QgsFieldComboBox
delF = self.dlg.delField_cb.currentField()
print(delF)
caps = layer.dataProvider().capabilities()
if caps & QgsVectorDataProvider.DeleteAttributes:
res = layer.dataProvider().deleteAttributes([delF])
layer.updateFields()
def delete_field_Cb(self,vlayer): self.dlg.delField_cb.setLayer(vlayer) field = self.dlg.delField_cb.setLayer(vlayer)
def run(self):
self.dlg.cb_layer.layerChanged.connect(self.delete_field_Cb)
self.dlg.delete_field_btn.clicked.connect(self.delete_field_Cb)
I am stuck and gettting the error as:
field = self.dlg.delField_cb.setLayer(vlayer) TypeError: QgsFieldComboBox.setLayer(): argument 1 has unexpected type 'bool'