#1 Fri 24 September 2021 12:38
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
QGIS 3.16: fermeture de formulaire non souhaitee
Bonjour,
Pour un plugin j'ai créé des formulaires (QDialog) avec QtDesigner qui fonctionnent correctement sauf pour le dernier et je ne sais pas pourquoi. J'arrive à l'ouvrir mais il se ferme tout seul dans la foulée sans message d'erreur dans QGis.
Voici le code de mon __init__.py qui s'y rapporte
Code:
from .fexporterxl import MonDialogExporterxl class BTI: def initGui(self): self.btn_export = QAction(QIcon(f'{folder}/logo/excel.png'),'Export Excel', self.iface.mainWindow()) self.btn_export.triggered.connect(self.exportxl) self.iface.addPluginToMenu('Base', self.btn_export) def exportxl(self): #choix des données à exporter leform = False for form in QApplication.allWidgets(): if form.windowTitle()[:8] == "Exporter": leform = True if form.isVisible() == False: form.show() break if leform == False: form = MonDialogExporterxl() form.show()
Voici le code du fexporterxl.py
Code:
from qgis.core import Qgis from PyQt5.QtWidgets import QDialog, QPushButton, QPlainTextEdit, QCheckBox, QComboBox, QLineEdit, QDateEdit from PyQt5.QtCore import Qt from qgis.PyQt import uic from pathlib import Path from .general import * folder = Path(__file__).resolve().parent ui_file = folder.joinpath('f_exporterxl.ui') ui_class, _ = uic.loadUiType(ui_file) class MonDialogExporterxl(ui_class, QDialog): def __init__(self): super().__init__() self.setupUi(self) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.findChild(QPushButton,"btn_ok").clicked.connect(self.exporter) couleur(self, self.findChild(QPushButton,"btn_ok"), "vert") def exporter(self): print("test")
Ce que j'ai testé :
- recréer plusieurs formulaires de zéro en testant différents noms => se sont tous fermés tout seul
- copier un formulaire existant et fonctionnel puis le renommer => se ferme tout seul
- dans "def exportxl" appeler un formulaire fonctionnel => reste ouvert
J'en conclu que mon code est bon et que le problème vient bien du formulaire mais je ne vois pas pourquoi. J'ai réduit le formulaire au strict minimum (juste un bouton) mais ça ne change rien. Dans QtDesigner J'ai comparé les propriétés d'un formulaire fonctionnel avec celui qui se ferme et rien ne change mis à part ObjectName et WindowsTitle.
Le formulaire qui se ferme est le seul du plugin à ne pas être rattaché à une couche shape, csv ou autre. Est ce que ça pourrait venir de là ?
Cordialement,
Hors ligne
#2 Fri 24 September 2021 13:56
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
Re: QGIS 3.16: fermeture de formulaire non souhaitee
Problème résolu j'ai remplacé
Code:
form.show()
par
Code:
form.exec_()
Dernière modification par tnicolas (Fri 24 September 2021 13:56)
Hors ligne