Страница 1 из 1

Добавление нового поля

Добавлено: 08 сен 2014, 06:52
Alessandro
Все делаю по инструкции.
http://gis-lab.info/docs/qgis/cookbook/vector.html

куски кода из моего модуля:

предварительно есть

Код: Выделить всё

from PyQt4.QtCore import QVariant
далее есть

Код: Выделить всё

        layer = iface.activeLayer()

        caps = layer.dataProvider().capabilities()
        
        if caps & QgsVectorDataProvider.AddAttributes:
            res = layer.dataProvider().addAttributes( [ QgsField("mytext", QVariant.String), QgsField("myint", QVariant.Int) ] )
то же самое пробую в консоле qgis.

caps ----- возвращает 7

QgsVectorDataProvider.AddAttributes ----- возвращает 8

layer.dataProvider().addAttributes( [ QgsField("mytext", QVariant.String), QgsField("myint", QVariant.Int) ] ) ----- возвращает false.

в итоге нет нового поля.

что именно ему не нравится?

Re: Добавление нового поля

Добавлено: 08 сен 2014, 06:58
Alessandro
res - говорит не объявлен.

значит он вообще не выполняет условие.

совсем запутался.

Re: Добавление нового поля

Добавлено: 08 сен 2014, 07:01
Alessandro

Код: Выделить всё

layer.startEditing()
layer.addAttribute(QgsField("mytext", QVariant.String))
layer.commitChanges()
тоже не помогает.

Re: Добавление нового поля

Добавлено: 09 сен 2014, 06:04
Alessandro

Код: Выделить всё

layer.startEditing()
layer.changeAttributeValue(fid, fieldIndex, value)
layer.commitChanges()
вот это работает. значит просто нет доступа для создания нового поля?

А как программно обратиться к вкладке "Действия"?

Re: Добавление нового поля

Добавлено: 10 сен 2014, 09:14
Alessandro
смог добавить Действие.

Код: Выделить всё

layer.actions().addAction(QgsAction.OpenUrl, "asd", "D:\\Database\\WriteLinesGPR.txt", False)
Странное обращение к addAction !?!?!
Он же принадлежит к QgsAttributeAction. почему тогда actions() ? Чего то я тут не понимаю.


А вот добавить новое поле к атрибутам векторного слоя так и не смог. Редактировать поле могу, а добавить нет. Для интереса создал пустой слой - поле добавляется. Где искать разрешение на редактирование полей?