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