#1 Wed 29 January 2014 16:12
- mich
- Participant occasionnel
- Lieu: Grenoble
- Date d'inscription: 1 Aug 2007
- Messages: 35
QGIS 2.0.1 : Formulaire(QT) Spatialite et Qgis
Bonjour,
Via qgis j'ai un formulaire .ui créée via QT et un script python qui permet de lier le champs PRINC au champs Secondaire (liste imbriquée) et qui va enregistrer les données dans une base Spatialite.
Tout marchais bien sur la version 1.8. Sur la version 2 il m'affiche bien les données dans la table temporaire (juste avant enregistrement des donnes) et quand je veux enregistrer, tous mes attributs disparaissent de ma table attributaire?
Voici le code Python utilisé?
Avez vous des idées
D'avance merci
Code:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
nameField = None
myDialog = None
comp = None
princ = None
listItems = None
def connecterCombos(dialog,layerid,featureid):
#initialise listItems
global listItems
listItems = []
global myDialog
myDialog = dialog
buttonBox = dialog.findChild(QDialogButtonBox,"buttonBox")
#connecter la ComboBox TYPE PRINC
global princ
princ = dialog.findChild(QComboBox,"TYPE_PRINC")
#connecter la ComboBox TYPE COMP
global comp
comp = dialog.findChild(QComboBox,"TYPE_COMP")
# Changer les possibilitees le menu deroulant TYPE COMP quand on change le TYPE PRINC
QObject.connect(princ, SIGNAL("currentIndexChanged(int)"), changeTypeComp)
# Deconnexion du signal dialog
buttonBox.accepted.disconnect(myDialog.accept)
buttonBox.accepted.connect(validate)
buttonBox.rejected.connect(myDialog.reject)
def calc_listItems():
# TYPE_COMP possibles en fonction de TYPE_PRINC
global listItems
if princ.currentText() == 'arrivee d\x27eau':
listItems = ["source","resurgence"]
if princ.currentText() == 'partage des eaux':
listItems = []
if princ.currentText() == 'perte karstique':
listItems = ["ponor", "doline"]
if princ.currentText() == 'puits de captage':
listItems = ["agricole", "AEP","individuel"]
if princ.currentText() == 'seuil':
listItems = ["bouchon de terre","cailloux","planches","silosacs","bonde de fond","beton","vanne"]
if princ.currentText() == 'station':
listItems = ["assainissement","G_Envt","pompage","refoulement"]
listItems.insert(0,"")
def changeTypeComp():
#calculer les types complementaires possibles
global listItems
calc_listItems()
# Charger les possibilitees dans le menu deroulant TYPE COMP
comp.clear()
comp.addItems(listItems)
def validate():
# Verifier que le champ type principal est bien renseigne
p = ["arrivee d\x27eau","partage des eaux","perte karstique","puits de captage","seuil","station"]
if not (princ.currentText() in p) :
#message erreur
msgBox = QMessageBox()
msgBox.setText("Type principal non valide.")
msgBox.exec_()
else:
global listItems
calc_listItems()
if not (comp.currentText() in listItems) :
msgBox = QMessageBox()
msgBox.setText("Type complementaire non valide.")
msgBox.exec_()
else :
# accepter
myDialog.accept()Hors ligne


