banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Thu 27 May 2021 10:04

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

QGIS 3: plugin - evenement a la fermeture de QGIS

Bonjour,

Dans le cadre de développement d'un plugin QGIS, je voudrais activer un événement (suppression de fichiers temporaires crées par le plugin) lors de la fermeture de QGIS.
J'ai pensé mettre mes instructions de suppression de fichiers dans la fonction unload du plugin, mais je ne voudrais pas que ces fichiers soient supprimés lors du rechargement du plugin, mais uniquement à la fermeture 'définitive' de QGIS.

Comment faire?

Merci, Nico

Hors ligne

 

#2 Thu 27 May 2021 12:48

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 946
Site web

Re: QGIS 3: plugin - evenement a la fermeture de QGIS

Bonjour,

Tu as en fait 2 choix en plus de celui du nettoyage au "unload":

* Soit nettoyer au démarrage du plugin mais cela pose le même problème que le nettoyage à la fin c'est à dire le risque de nettoyer lors du rechargement/mise à jour du plugin (pas tous les jours non plus)

* Soit "écouter" via un signal Qt la fermeture de QGIS qui est en fait une instance de QgsApplication qui hérite de QApplication (celle ci dispose d'un signal aboutToQuit). C'est ce que le code ci-dessous fait. Il écrit un fichier dans le cadre de ce snippet de code

Code:

def doSomethinBeforeQuiting():
    with open('/tmp/proof.txt', 'w') as outfile:
        outfile.write('Demo')

QgsApplication.instance().aboutToQuit.connect(doSomethinBeforeQuiting)

Thomas

Hors ligne

 

#3 Thu 27 May 2021 15:28

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: QGIS 3: plugin - evenement a la fermeture de QGIS

où mettre l'instruction ?

Code:

QgsApplication.instance().aboutToQuit.connect(doSomethinBeforeQuiting)

dans __init__() ou dans initGui() ?

Nico

Hors ligne

 

Pied de page des forums

Powered by FluxBB