Buon pomeriggio, è un po' che sto sviluppando il mio plugin e dato che sono alle prime armi sto cercando di risolvere i problemi di volta in volta.
Ora ho questo problemino: i = self.comboBox.currentIndex() if i < 0: QMessageBox.information(None, "SearchParcels2", "Nessun Layer Caricato") return None layerId = self.comboBox.itemData(i) QMessageBox.information(None, "DEBUG:", str(layerId)) layer = QgsMapLayerRegistry.instance().mapLayer(layerId) non riesco a capire perché il layerId nel QMessageBox.information mi da come risultato "None". Le ho provate tutte. Ho caricato diversi layer in GIS, infatti cambiando voce nella comboBox cambia il valore "i". Ma una volta che questo lo vado a mettere in self.comboBox.itemData(i) non so che succede. Ogni layer che io scelga è così. Mi potete dare delucidazioni su significato di itemData? Forse mi sfugge qualcosa. Grazie |
perche' forse itemData deve venir riempicon con setData... quel che
leggi nel combobox e' il valore text()... in data puoi ficcarci quel che voi e se non ci ficchi niente esplicitamente niente ci trovi. prova a vedere se e' questo il problema ciao Luigi Pirelli 2014-08-01 14:20 GMT+02:00 NicoPez <[hidden email]>: > Buon pomeriggio, è un po' che sto sviluppando il mio plugin e dato che sono > alle prime armi sto cercando di risolvere i problemi di volta in volta. > > Ora ho questo problemino: > > i = self.comboBox.currentIndex() > if i < 0: > QMessageBox.information(None, "SearchParcels2", "Nessun Layer > Caricato") > return None > layerId = self.comboBox.itemData(i) > QMessageBox.information(None, "DEBUG:", str(layerId)) > layer = QgsMapLayerRegistry.instance().mapLayer(layerId) > > non riesco a capire perché il layerId nel QMessageBox.information mi da come > risultato "None". Le ho provate tutte. > > Ho caricato diversi layer in GIS, infatti cambiando voce nella comboBox > cambia il valore "i". Ma una volta che questo lo vado a mettere in > self.comboBox.itemData(i) non so che succede. Ogni layer che io scelga è > così. > > Mi potete dare delucidazioni su significato di itemData? Forse mi sfugge > qualcosa. > > Grazie > > > > -- > View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Python-itemData-tp7589041.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 |
E come faresti?
Notavo che nel plugin a cui mi sono ispirato non c'è.. come farà a lui a funzionare non lo so proprio. :D |
intanto leggiti
http://qt-project.org/doc/qt-4.8/qcombobox.html deduco che magari puo' servirti qualcosa come il metodo currentText() (da castare)... questo alla cieca, senza sapere nulla di quelche hai scrittonel plugin 2014-08-01 15:22 GMT+02:00 NicoPez <[hidden email]>: > E come faresti? > > Notavo che nel plugin a cui mi sono ispirato non c'è.. come farà a lui a > funzionare non lo so proprio. :D > > > > -- > View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Python-itemData-tp7589041p7589043.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 |
Il giorno Fri, 1 Aug 2014 15:37:22 +0200
Luigi Pirelli <[hidden email]> ha scritto: ciao Nico e Luigi, > intanto leggiti > > http://qt-project.org/doc/qt-4.8/qcombobox.html credo che Luigi abbia ragione; devi popolare la comboBox ed io non vedo dove lo fai in quella porzione di codice che hai postato; devi prima inserire i valori con i comandi comboBox.addItem() comboBox.addItems() comboBox.insertItem() comboBox.insertItems() (li trovi documentati alla pagina che ti ha indicato Luigi); dopo di che potrai prelevare quello che ti interessa; spero ti sia di aiuto, ciao, giuliano _______________________________________________ [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 |
Ciao, in realtà la comboBox l'ho già popolata con questo codice:
def chooseLayer(self): layerList = [] # crea una lista vuota self.comboBox.clear() # svuota la lista del combo box layerList = self.getLayerNames() # a layerList assegna il risultato della procedura getLayerNames() self.comboBox.addItems(layerList) self.FoglioLine.clear() self.ParticelLine.clear() self.OnSelectBoxClicked() return # Get the list of layers (list of names) in QgsMapLayerRegistry def getLayerNames(self): layermap = QgsMapLayerRegistry.instance().mapLayers() layerLst = [] for i, layer in layermap.iteritems(): if layer.type() == QgsMapLayer.VectorLayer: # considera solo i layers vettoriali layerLst.append( unicode( layer.name() ) ) # prende il nome di ogni layer a lo aggiunge alla lista layerLst return layerLst nel frattempo sto cmq leggendo il la pagina che mi avete indicato :) Grazie |
Il giorno Fri, 1 Aug 2014 06:57:32 -0700 (PDT)
NicoPez <[hidden email]> ha scritto: ciao Nico, > Ciao, in realtà la comboBox l'ho già popolata con questo codice: e allora scusa per il tentativo andato a vuoto :-( però > layerLst.append( unicode( layer.name() ) ) # prende ^^^^^^^^^^^^ > layerList = self.getLayerNames() # a layerList assegna il ^^^^^^^^^^^^^^^^^^^^ > self.comboBox.addItems(layerList) ^^^^^^^^^^^^^^^^^^^ da queste tre righe (NB: ho invertito l'ordine) sembra che metti nella comboBox i nomi dei layer; quì invece > layerId = self.comboBox.itemData(i) ^^^^^^^ sembra che vuoi estrarne l'ID: ho visto male ? domanda diversa: parli di particelle, è un plugin che si occupa di dati catastali? hai voglia di spiegare (o spiegarmi in pvt) l'obiettivo del tuo plugin: mi potrebbe interessare; grazie, ciao, giuliano _______________________________________________ [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 |
Esatto, dall'ID preso da un elemento della ComboBox dovrei estrapolare l'"ItemData" ma come risultato ho nessun elemento. Da quanto ho capito itemData vuole un argomento "QVariant", mentre "i" è un element "int". Però non capisco come posso fare a prendere i Data di un layer e utilizzarli poi per la voce successiva.
layerId = self.comboBox.itemData(i) layer = QgsMapLayerRegistry.instance().mapLayer(layerId) Sì, è un plugin per il catasto. Prendendo spunto da QuickFinder (che invece è molto più complesso nella sua programmazione) volevo fare una ricerca incrociata cercando foglio (campo1) e particella (campo2) da un layer catastale. |
Il giorno Fri, 1 Aug 2014 07:56:51 -0700 (PDT)
NicoPez <[hidden email]> ha scritto: > ..... Però non capisco come posso fare a prendere i Data di un layer > e utilizzarli poi per la voce successiva. > > layerId = self.comboBox.itemData(i) > layer = QgsMapLayerRegistry.instance().mapLayer(layerId) scusa, probabilmente non è l'errore che tu cerchi, però ti segnalavo che tu nella combo metti i NOMI dei layer, non gli ID! almeno così mi sembra :-) > Sì, è un plugin per il catasto. Prendendo spunto da QuickFinder (che > invece è molto più complesso nella sua programmazione) volevo fare > una ricerca incrociata cercando foglio (campo1) e particella (campo2) > da un layer catastale. tienici(mi) informati(o) allora :-) ciao, giuliano _______________________________________________ [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 |
In reply to this post by NicoPez
Ciao, tu stai recuperando i nomi dei layer e popolando la combobox con quelli, quindi ogni elemento (item) della combobox avrà soltanto la proprietà text. Usando il comando Ti servono quindi anche gli id dei layer, da usare come item data, non solo il nome: se i dati non li metti dentro la combobox, poi non puoi decidere di recuperarli. Saluti. Sent from mobile. Sorry for being short. Il 01/ago/2014 16:56 "NicoPez" <[hidden email]> ha scritto:
Esatto, dall'ID preso da un elemento della ComboBox dovrei estrapolare _______________________________________________ [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 |
Free forum by Nabble | Edit this page |