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é ?

#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

 

Pied de page des forums

Powered by FluxBB