<html>
<head>
<meta name="generator" content="Windows Mail 17.5.9600.20911">
<style data-externalstyle="true"><!--
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
}
p.MsoNormal, li.MsoNormal, div.MsoNormal {
margin:0in;
margin-bottom:.0001pt;
}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst, 
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle, 
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
line-height:115%;
}
--></style></head>
<body dir="ltr">
<div data-externalstyle="false" dir="ltr" style="font-family: 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif';font-size:12pt;"><div style="color: rgb(0, 0, 0);">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:</div><div style="color: rgb(0, 0, 0);"><br></div><div style="color: rgb(0, 0, 0);">from PyQt4.QtCore import *<br>from PyQt4.QtGui import *<br> <br></div><div style="color: rgb(0, 0, 0);">myDialog = None</div><div style="color: rgb(0, 0, 0);">pkey_spuF  = None</div><div style="color: rgb(0, 0, 0);"> <br>def formOpen(dialog,layerid,featureid):<br>        global myDialog<br>        myDialog = dialog<br>        global pkey_spuF, quotaF, mod_cF, desc_cF<br>        pkey_spuF = dialog.findChild(QLineEdit,"pkey_spu")<br>        quotaF = dialog.findChild(QLineEdit,"quota_slm")<br>        mod_cF = dialog.findChild(QComboBox,"mod_identcoord")<br>        desc_cF = dialog.findChild(QLineEdit,"desc_modcoord")<br>        buttonBox = dialog.findChild(QDialogButtonBox,"buttonBox")</div><div><br></div><div style="color: rgb(0, 0, 0);">        # Disconnect the signal that QGIS has wired up for the dialog to the button box.<br>        buttonBox.accepted.disconnect(myDialog.accept)<br>        # Wire up our own signals.<br>        buttonBox.accepted.connect(validate)<br>        buttonBox.rejected.connect(myDialog.reject)</div><div><br></div><div style="color: rgb(0, 0, 0);">def validate():<br>        # Make sure that the pkey_spu isn't empty.<br>        if not len(pkey_spuF.text()) > 0 or pkey_spuF.text() == 'NULL':<br>            pkey_spuF.setStyleSheet("background-color: rgba(255, 107, 107, 150);")<br>            msgBox = QMessageBox()<br>            msgBox.setText("il campo chiave primaria deve essere valorizzato")<br>            msgBox.exec_()<br>            myDialog.resetValues()<br>        else:<br>            # Make sure that the quota_slm isn't empty.<br>             if not len(quotaF.text()) > 0 or quotaF.text() == 'NULL':<br>                 quotaF.setStyleSheet("background-color: rgba(255, 107, 107, 150);")<br>                 msgBox = QMessageBox()<br>                 msgBox.setText("il campo Quota slm deve essere valorizzato")<br>                 msgBox.exec_()<br>            # myDialog.reject<br>             else:<br>            # Return the form as accpeted to QGIS.<br>                 myDialog.accept()</div><div style="color: rgb(0, 0, 0);"><br></div><div style="color: rgb(0, 0, 0);">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?</div><div style="color: rgb(0, 0, 0);">Grazie in anticipo</div><div style="color: rgb(0, 0, 0);"><br></div><div style="color: rgb(0, 0, 0);">Alessandro Ciali</div><div style="color: rgb(0, 0, 0);"><br></div></div>
</body>
</html>