He utilizado el siguiente fragmento de código para encontrar el búfer.
def buffer(self):
layer = self.iface.activeLayer()
distance = float( self.dlg.DistancelineEdit.text() )
city = self.dlg.Citycombo.currentText()
expr = QgsExpression('"name_1" = \'' + city + '\'' )
it = layer.getFeatures( QgsFeatureRequest( expr ) )
feature = it.next()
# Perform a buffer on the feature geometry
myBufferPolygon = feature.geometry().buffer(dist, 50)
Se producen dos errores
feature = it.next()
StopIteration.
2.distancia = float( self.dlg.DistancelineEdit.text() ) ValueError: no se pudo convertir cadena a float: