Salve, sto cercando di creare una init function in phyton da collegare ad una 
finestra di attributi (QgsAttributeForm) in qgis per inserire alcune funzioni 
di controllo sull’inserimento di valori; ho utilizzato il form di Nathan che è 
riportato anche nell’help di qgis per la customizzazione delle finestre di 
dialogo. La domanda è questa: quando la procedura di validazione fallisce 
vorrei che il form degli attributi rimanesse aperto per correggere i valori non 
validi, invece si chiude e si crea comunque un record in tabella. Sotto la 
parte di form che valida l’inserimento dati:


from PyQt4.QtCore import *
from PyQt4.QtGui import *
 


myDialog = None

pkey_spuF  = None

 
def formOpen(dialog,layerid,featureid):
        global myDialog
        myDialog = dialog
        global pkey_spuF, quotaF, mod_cF, desc_cF
        pkey_spuF = dialog.findChild(QLineEdit,"pkey_spu")
        quotaF = dialog.findChild(QLineEdit,"quota_slm")
        mod_cF = dialog.findChild(QComboBox,"mod_identcoord")
        desc_cF = dialog.findChild(QLineEdit,"desc_modcoord")
        buttonBox = dialog.findChild(QDialogButtonBox,"buttonBox")


        # Disconnect the signal that QGIS has wired up for the dialog to the 
button box.
        buttonBox.accepted.disconnect(myDialog.accept)
        # Wire up our own signals.
        buttonBox.accepted.connect(validate)
        buttonBox.rejected.connect(myDialog.reject)


def validate():
        # Make sure that the pkey_spu isn't empty.
        if not len(pkey_spuF.text()) > 0 or pkey_spuF.text() == 'NULL':
            pkey_spuF.setStyleSheet("background-color: rgba(255, 107, 107, 
150);")
            msgBox = QMessageBox()
            msgBox.setText("il campo chiave primaria deve essere valorizzato")
            msgBox.exec_()
            myDialog.resetValues()
        else:
            # Make sure that the quota_slm isn't empty.
             if not len(quotaF.text()) > 0 or quotaF.text() == 'NULL':
                 quotaF.setStyleSheet("background-color: rgba(255, 107, 107, 
150);")
                 msgBox = QMessageBox()
                 msgBox.setText("il campo Quota slm deve essere valorizzato")
                 msgBox.exec_()
            # myDialog.reject
             else:
            # Return the form as accpeted to QGIS.
                 myDialog.accept()


Il problema, credo, sta nel fatto che la riga  “ myDialog.reject “ o 
“myDialog.resetValues()” (ho provato sia l’una che l’altra); qualcuno sa 
aiutarmi?

Grazie in anticipo


Alessandro Ciali
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni 
dell'Associazione GFOSS.it.
750 iscritti al 18.3.2015

Rispondere a