Suite

Fermer la boîte de dialogue lorsque l'algorithme est terminé (plugin QGIS)

Fermer la boîte de dialogue lorsque l'algorithme est terminé (plugin QGIS)


J'ai lu de nombreux fils de discussion à ce sujet mais je n'arrive pas à trouver la solution (je suis débutant dans la création de plugins…).

Ce que je dois faire, c'est fermer la fenêtre de dialogue lorsque l'algorithme a terminé son travail.

C'est le morceau de code dualg.dialog.py:

class CreateModelDialog(QDialog, FORM_CLASS): def __init__(self, iface): QDialog.__init__(self) self.iface = iface self.setupUi(self) self.buttonBox.rejected.connect(self.reject) self.buttonBox.button (QDialogButtonBox.Ok).clicked.connect(self.createModel) self.manageGui()… def createModel(self): modelName = self.bxDBname.text() modelType = self.cmbBxModelType.currentText() lengthString = self.cmbBxLengthUnit. currentText() timeString = self.cmbBxTimeUnit.currentText() workingDir = self.OutFilePath print 'Direttori recuperata… ' , workingDir isChild = 1.0 createModel(modelName, workingDir, modelType, isChild, lengthString, timeString)

Alorsself.buttonBox.button(QDialogButtonBox.Ok).clicked.connect(self.createModel), lorsque vous cliquez dessus, lecreateModelméthode.

Mais la boîte de dialogue reste ouverte, où dois-je modifier le code ?


C'est le__init__une fonction:

def __init__(self, iface): QDialog.__init__(self) self.iface = iface self.setupUi(self) self.buttonBox.rejected.connect(self.reject) self.buttonBox.button(QDialogButtonBox.Ok).clicked. connect(self.createModel) self.manageGui()

C'est la fonction principaleplugin.pyfichier:

def runCreateModel(self): """Exécuter la méthode qui effectue tout le vrai travail""" # Créer la boîte de dialogue (après traduction) et conserver la référence self.dlgMD = mdDialog.CreateModelDialog(self.iface) # afficher la boîte de dialogue self.dlgMD .show() # Exécute la boucle d'événement de dialogue self.dlgMD.exec_()

Dans ton__init__fonction dans l'implémentation du plugin recherchez une ligne où votre dialogue a été créé.

Ce sera probablement :

self.dlg = CreateModelDialog()

Ensuite, si vous souhaitez fermer la fenêtre de dialogue, vous devez exécuter :

self.dlg.close()

Mettez cette ligne dans la fonction avec votre algorithme à la fin du code.

Exemple de structure de votre plugin.py :

class CreateModel: def __init__(self, iface):… self.dlg = CreateModelDialog()… # connexions self.dlg.button.clicked.connect(self.function) def function(self): # du code pour votre algorithme self. dlg.close()… def run(self):…