I've generated a QGIS plugin using the QGIS Plugin Builder v3.0.3. One issue I am encountering with it is - as soon as I click the "OK" button (that invokes the run method) - the dialog closes. Is there anyway to prevent this behavior? The plugin I am developing is downloading data from a REST api - which can take some time depending on extent.
Ideally I'd like to keep to the dialog open - and showing an indeterminate progress bar - until the data is done downloading. What happens now is the dialog closes immediately, and then a few seconds later - the raster is added to the map.
Run method from the plugin below. I didnt alter anything else in the code templates generated by the Plugin Builder.
def run(self): # show the dialog self.dlg.show() # Run the dialog event loop result = self.dlg.exec_() # See if OK was pressed if result: # build dem_url from input form parameters # what you see here is just a dummy url for this snippet dem_url = 'http://localhost/dem' r = requests.get(dem_url,stream=True) output_dem = self.dlg.lineEdit.text() with open(output_dem,'wb') as out: for chunk in r.iter_content(chunk_size=1024): if chunk: # filter out keep-alive new chunks out.write(chunk) iface.addRasterLayer(output_dem, os.path.split(output_dem))