Я использую pyqt5 для создания плагина Qgis 3.4, этот плагин должен загружать пару слоев и масштабировать до выбранного, но код выполняется слишком быстро и проходит линию масштабирования до того, как слои загружаются в Qgis.
код следующий:
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()", "","All Files (*);;Shapefile's (*.shp)", options=options)
if fileName:
shape_name = fileName
shapelayer = QgsVectorLayer(shape_name, "project's shapefile", "ogr")
if not shapelayer:
self.statusBar().showMessage('shapefile is invalid')
else:
urlWithParams = 'url=urltoBaseMap'
rlayer = QgsRasterLayer(urlWithParams, 'BaseMap', 'wms')
if not rlayer.isValid():
self.statusBar().showMessage('Layer failed to load!')
QgsProject.instance().addMapLayer(rlayer)
QgsProject.instance().addMapLayer(shapelayer)
self.iface.setActiveLayer(shapelayer)
def layerzoom(self):
self.iface.zoomToActiveLayer()
def runboth(self):
self.openFileNameDialog()
#time.sleep(5)
self.layerzoom()
как я могу вызвать функцию масштабирования после того, как функция, которая загружает слои, заканчивает загрузку слоев?
Я пробовал time.sleep (), но он не ждет завершения openFileNameFialog (), поэтому проблема сохраняется.