Message posté par : tnicolas
----------------------------------------
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,
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=346600#p346600
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net