답변:
QGIS 2.18부터는 레이어 속성 / 필드 속성으로 이동하여 표현식 ( @project_filename
이 경우)을 기본값으로 설정하십시오.
프로젝트 파일 이름을 속성으로 추가하는 기능을 정의하고이 기능을 기능을 추가하는 이벤트와 연결할 수 있습니다. 다음 코드를 사용하여 필드 이름을 원하는대로 변경하고 (사용한 Name
) Python 콘솔에 붙여 넣을 수 있습니다. 이제 새로운 기능을 추가 할 때마다 필드가 현재 프로젝트 이름으로 채워집니다.
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)
.