pyQGIS를 이용한 벡터 데이터 처리 1 : Message, Progress 출력

QGIS 프로그램 안에서 사용자에게 어떤 메세지를 전달하고자 할 때의 코드의 예는 다음과 같습니다.

iface.messageBar().pushMessage("안녕하세요, pyQGIS")

실행 결과는 QGIS의 맵영역 상단에 표시되며 다음과 같습니다.

iface의 messageBar를 통한 pushMessage 매서드는 더 많은 인자를 받을 수 있습니다. 다음 코드를 보면요.

iface.messageBar().pushMessage(
    "환영", 
    "안녕하세요, pyQGIS",
    level=Qgis.Success,
    duration=5
)

아래의 실행 결과를 통해 각 인자의 의미를 유추할 수 있습니다.

세번째와 네번째 인자에 대해 언급하면 먼저 level 인자는 4가지 값을 가질 수 있습니다. Qgis.Critical, Qgis.Warning, Qgis.Info, Qgis.Success이며 각각 에러 메세지, 경고 메세지, 정보 메세지, 성공 메세지에 대한 아이콘을 표시해 줍니다. 그리고 duration은 메세지를 몇초간 표시하고 사라지게 할지 지정할 수 있습니다.

QGIS에서는 시간이 오래 걸리는 연산이 많이 수행됩니다. 이때 수행되는 연산의 진행율을 사용자에게 알려주는 코드는 다음과 같습니다.

import time

progressMessageBar = iface.messageBar().createMessage("처리 메세지")

progress = QProgressBar()
progress.setMaximum(100)
progressMessageBar.layout().addWidget(progress)

iface.messageBar().pushWidget(progressMessageBar, Qgis.Info)

for i in range(100):
    time.sleep(0.01)
    progress.setValue(i + 1)

time.sleep(0.01)을 100번 호출하므로 1초에 걸쳐 최대 100까지 값을 증가시켜 진행율을 표시합니다. 실행결과는 다음과 같습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다