[Qgis-developer] problem with forms and python init function

Luca Lanteri mescal72 at gmail.com
Fri Dec 20 05:55:21 PST 2013

Thanks Nathan, your code is decisively more clearer !

 nevertheless the problem remain  the same: if i try to load the data
from a table without geometry, values for i.attributes()[1] remain


2013/12/20 Nathan Woodrow <madmanwoo at gmail.com>:
> Hey Luca,
> If all you want to do is load the attributes for a column from layer you can
> just do this:
> layer = QgsMapLayerRegistry.instance().mapLayersByName('yourname')[0]
> for feature in layer.getFeatures():
>      combo.addItem(feature['columnname'])
> That will loop all the features and load the value from columnname into the
> combo.  You will have to add more smarts to that if you need more logic.
> If you are in your initFunction you already have the layer:
> def init(dialog, feature, layer):
>   for feature in layer.getFeatures():
>         .....
> Nathan
> On Fri, Dec 20, 2013 at 10:03 PM, Luca Lanteri <mescal72 at gmail.com> wrote:
>> Hi to all,
>> I'm a newbie with pyqgis so apologize me for the trivial question. I'm
>> trying to create a forms using QT and to add some intelligence into it
>> using the "python Init function", present in the Layer properties ->
>> field menu. I want to update the data in combo2 on the base of the
>> combo1 choosed value, but I encountered some problem, probably due to
>> my lack of knowled of QGIS API. This is my first problems:
>> I try to read some data from a layer using this code [1]. If the layer
>> is a geometry layer all works fine but if I try to read the data from
>> a table (without geom coloumn) i cant read the attributes. Both object
>> are QgsVectorLayer so I though that I can use the same methods. In
>> order to resolve this problem i just addes a geom coloum to my table
>> but it's just a ploy.
>> The second, and the very real problem, is that when I try to update
>> the the value using the
>> curLayer.changeAttributeValue() method some strange beaviours occours.
>> - If i try to commit changes from the code (using
>> curLayer.commitChanges() ), and I'm in the table form view, Qgis
>> crash.
>> - when I try to commit changes use the toogle editing mode button, and
>> I'm in the table form view, all my changes are lost.
>> - when I try to commit changes use the toogle editing mode button, and
>> I'm just in the form view, changes are lost alternatively once on two
>> saving operation.
>> I don't understand if this is a problem of my code or a qgis bug.
>> Any hint ?
>> I hope to have described the problem clearly.
>> thank in advance
>> Luca
>> [1]
>> alegend = iface.legendInterface()
>> allLayers=alegend.layers()
>>     for i in allLayers:
>>         if i.name()=='mytab':
>>             aLayer=i
>> lista=[]
>> rsTipo=[]
>> for i in afeature:
>>         a=i.attributes()
>>         l1=i.attributes()[0]
>>         l2=i.attributes()[1]
>>         l3=i.attributes()[2]
>>         l4=i.attributes()[3]
>>         alist=[l1,l2,l3,l4]
>>         rsTipo.append(alist)
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer

More information about the Qgis-developer mailing list