#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


