PyQT: leggere un elemento in una tabella di valori

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

PyQT: leggere un elemento in una tabella di valori

NicoPez
Salve a tutti, sto continuando la programmazione del mio primo plugin e ora ho questo problema:

sono arrivato ad individuare un layer da me voluto; ora da questo posso fare sia il dataProvider (con tutti i suoi attributi) sia il QgsFeature (con tutti i suoi attributi).

Leggendo sul web un'ottima soluzione poteva essere questa:

provider = layer.dataProvider()
fieldIndex = provider.fieldNameIndex(self.campo2.currentText())
columns = provider.fields()
columns[fieldIndex]

for key, value in columns[fieldIndex].items():
ecc...

in pratica, se ho capito bene, da tutta la tabella andrei a prendere solo la colonna individuata dal "fieldIndex" e su questa poi innestare un "for" dove leggere di volta in volta ogni valore di "key" e "value".
Sarebbe stata la soluzione migliore, ma ho un errore perché "items" non è un attributo valido per quella classe.
Da quanto ho capito qualche anno fa si poteva fare, ma adesso non più perché sono cambiati gli attributi. Sbaglio?

Allora come mi posso muovere per poter riuscire a leggere uno ad uno gli elementi di una colonna della tabella del vettore?
Grazie mille

P.S.: mi scuso se mi esprimo male, ma non sono molto pratico di programmazione :)
Reply | Threaded
Open this post in threaded view
|

Re: PyQT: leggere un elemento in una tabella di valori

NicoPez
Un'altra questione apparentemente banale.

La classe con l'attributo QgsFeature().attribute() che argomento vuole al suo interno? Nella API Documentation ho letto questo:

QgsFeature::attribute (const QString & name) const

quindi presumo voglia la stringa con il nome del campo. Ma mi da errore lo stesso, perché?
Mettiamo che il mio campo si chiami PIPPO come devo scrivere?

QgsFeature().attribute('PIPPO') ?

Grazie :)
Reply | Threaded
Open this post in threaded view
|

Re: PyQT: leggere un elemento in una tabella di valori

Luigi Pirelli-2
in linea generale

se vl e' il QgVectorLayer

for feat in vl.getFeatures(): <------(okkio che e' un iteratore!)
    print feat.attribute("pippo")

2014-08-27 10:12 GMT+02:00 NicoPez <[hidden email]>:

> Un'altra questione apparentemente banale.
>
> La classe con l'attributo QgsFeature().attribute() che argomento vuole al
> suo interno? Nella API Documentation ho letto questo:
>
> QgsFeature::attribute (const QString & name) const
>
> quindi presumo voglia la stringa con il nome del campo. Ma mi da errore lo
> stesso, perché?
> Mettiamo che il mio campo si chiami PIPPO come devo scrivere?
>
> QgsFeature().attribute('PIPPO') ?
>
> Grazie :)
>
>
>
> --
> View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/PyQT-leggere-un-elemento-in-una-tabella-di-valori-tp7589199p7589203.html
> Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
> _______________________________________________
> [hidden email]
> 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.
> 666+40 iscritti al 5.6.2014
_______________________________________________
[hidden email]
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.
666+40 iscritti al 5.6.2014