回答:
QGIS 2.18以降、レイヤープロパティ/フィールドプロパティに移動し、式(@project_filename
この場合)をデフォルト値として設定します。
プロジェクトファイル名を属性として追加する関数を定義し、この関数を機能を追加するイベントに接続できます。次のコードを使用して、フィールドの名前を任意の名前に変更し(使用しましたName
)、Python Consoleに貼り付けることができます。これで、新しい機能を追加するたびに、現在のプロジェクト名がフィールドに入力されます。
import os
# Get project name
project = QgsProject.instance()
project_name = os.path.basename(project.fileName())
# Set active layer
layer = qgis.utils.iface.activeLayer()
# Define function to select added feature and add attribute to field "Name"
def update(featureAdded):
idx = layer.fieldNameIndex('Name')
layer.changeAttributeValue(featureAdded, idx, project_name)
# Connect "featureAdded" event to "select" function
layer.featureAdded.connect(update)
featureAdded
がトリガーされたときにパラメーターとして取得するものは、実際には機能IDです。そして、それはあなたが呼び出すために必要なすべてですchangeAttributeValue
。update
機能あなただけ(あなたの変数名を使用して)2行が必要になりますidx = layer.fieldNameIndex('Name')
とlayer.changeAttributeValue(featureAdded, idx, project_name)
。