def delete_features(layer, features, text): ids = features.keys() if len(ids) == 0: return question = ('Do you want to delete all the following features with area %s' % text) features_text = 'FID: area\n' for fid, area in features.iteritems(): features_text += '%s: %s\n' % (fid, area) mb = QMessageBox( QMessageBox.Question, 'Confirm deletion', question, QMessageBox.Yes | QMessageBox.No) mb.setDetailedText(features_text) # mb.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) mb.setSizeGripEnabled(True) if mb.exec_() == QMessageBox.Yes: layer.startEditing() layer.dataProvider().deleteFeatures( ids ) layer.commitChanges()