Bug report #15319
QgsMapCanvas().zoomToCanvas() not working in script
|Affected QGIS version:||2.14.3||Regression?:||No|
|Operating System:||Windows||Easy fix?:||No|
|Pull Request or Patch supplied:||No||Resolution:|
|Crashes QGIS or corrupts data:||No||Copied to github as #:||23251|
Apologies in advance if it turns out I'm just doing something wrong - I have posted on GIS stackexchange but not had any responses.
the code below works as expected when typed in line-for-line in to the python console, but when I import the function from a script and run it it doesn't zoom to the selected feature. the feature here is a from point-based layer from a PostGres database.
def find_acc(layer, expression, scale = 2500): #find_acc("accidents", "\\"Police_ref\\" = '0111XH30035'", 2500) lay = core.QgsMapLayerRegistry.instance().mapLayersByName(layer) canvas = QgsMapCanvas() request = core.QgsFeatureRequest().setFilterExpression(expression) iter = lay.getFeatures(request) selection = [f for f in iter] if len(selection) == 1: print "Found accident" accident = selection else: raise IOError, "More than 1 accident found" lay.setSelectedFeatures([accident.id()]) # appears to work up until here - feature is highlighted on the map canvas.zoomToSelected()
(the formatting above isn't correct but that's not the issue, it's fine in my script)