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

Не удаётся добавить новое поле (pyQGIS)

Добавлено: 09 сен 2012, 22:51
SS_Rebelious
В консоли QGIS делаю всё по инструкции:

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

layer = qgis.utils.iface.activeLayer()
caps = layer.dataProvider().capabilities()
if caps & QgsVectorDataProvider.AddAttributes:
res = layer.dataProvider().addAttributes( [ QgsField("mytext", QVariant.String), QgsField("myint", QVariant.Int) ] )

Получаю ошибку:

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

Traceback (most recent call last):
  File "<input>", line 2, in <module>
NameError: name 'QVariant' is not defined
В чём может быть проблема?

Re: Не удаётся добавить новое поле (pyQGIS)

Добавлено: 10 сен 2012, 08:38
yellow-sky

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

from PyQt4.QtCore import QVariant

Re: Не удаётся добавить новое поле (pyQGIS)

Добавлено: 10 сен 2012, 19:03
SS_Rebelious
Спасибо!

И ещё вопрос вдогонку. Как правильно записывать параметры нового поля, если я хочу задать их вручную? Например, я пытаюсь делать так: QgsField("real", QVariant.Double, double, 10, 3) - не получается.

И совсем вдогонку ещё вопрос. Почему используется такая странная запись функции создания нового поля: 'if caps &...: res = ..."

Re: Не удаётся добавить новое поле (pyQGIS)

Добавлено: 10 сен 2012, 21:25
Voltron
SS_Rebelious писал(а):Как правильно записывать параметры нового поля, если я хочу задать их вручную?

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

f = QgsField("fieldName", QVariant.Double, "", 20, 15)
SS_Rebelious писал(а):Почему используется такая странная запись функции создания нового поля: 'if caps &...: res = ..."
Проверка возможности выполнить действие и успешность этого действия.

Re: Не удаётся добавить новое поле (pyQGIS)

Добавлено: 10 сен 2012, 21:29
SS_Rebelious
Да, кавычки надо не забывать ставить))) Спасибо!