25.3. QGIS 파이썬 콘솔
이 장을 보다 보면 알게 되겠지만, QGIS는 플러그인 아키텍처로 설계되어 있습니다. 플러그인은 지리공간 업계에서는 매우 유명한 언어인 파이썬으로 작성할 수 있습니다.
QGIS는 사용자가 객체(레이어, 피처, 인터페이스)와 대화형 작업을 할 수 있도록 파이썬 API(예시 코드를 보고 싶다면 PyQGIS 개발자 쿡북 <PyQGIS-Developer-Cookbook> 을 참조)를 제공합니다. 물론 QGIS에는 파이썬 콘솔도 있습니다.
QGIS 파이썬 콘솔은 파이썬 명령어 실행을 위한 대화형 셸(shell)입니다. 그리고 사용자가 파이썬 스크립트를 편집하고 저장할 수 있는 파이썬 파일 편집기가 있습니다. 콘솔과 편집기 모두 PyQScintilla2 패키지를 기반으로 합니다. 콘솔을 열려면
(Ctrl+Alt+P) 메뉴 옵션을 선택하십시오.25.3.1. 대화형 콘솔
대화형 콘솔은 툴바, 입력 영역 그리고 출력 영역으로 이루어져 있습니다.
25.3.1.1. 툴바
툴바는 다음 도구들을 제공합니다:
25.3.1.2. 콘솔
콘솔의 주요 기능은 다음과 같습니다:
다음 API들을 위한 코드 완성, 문법 구문 강조, 그리고 팝업 도움말:
파이썬
PyQGIS
PyQt5
QScintilla2
osgeo-gdal-ogr
Ctrl+Alt+Space: 파이썬 콘솔 설정 에서 활성화하면 사용할 수 있는 자동 완성 목록 보기
출력 영역에서 컨텍스트 메뉴의 Run Selected 를 선택하거나 Ctrl+E 조합키를 눌러 코드 조각 실행하기
입력 영역에서 Up 및 Down 방향키를 눌러 명령어 이력을 탐색하고 원하는 명령어 실행하기
Ctrl+Shift+Space 조합키로 명령어 이력 살펴보기: 어느 행을 더블클릭하면 해당 명령어를 실행합니다. 입력 영역에서 컨텍스트 메뉴를 통해 Command History 대화창을 열 수도 있습니다.
명령어 이력 저장 및 삭제: 명령어 이력은 활성화된 사용자 프로파일 폴더 아래
console_history.txt
파일로 저장됩니다._api
를 입력하면 QGIS C++ API 문서를 엽니다._pyqgis
를 입력하면 QGIS Python API 문서를 엽니다._cookbook
을 입력하면 PyQGIS 개발자 쿡북 을 엽니다.
팁
출력 패널에서 실행한 명령어 재사용
출력 패널에서 일부 텍스트를 선택한 다음 Ctrl+E 조합키를 누르면 코드 조각을 실행할 수 있습니다. 선택한 텍스트가 인터프리터 프롬프트(>>>
, ...
)를 담고 있어도 상관없습니다.
25.3.2. 코드 편집기
편집기 위젯을 활성화하려면 Show Editor 버튼을 클릭하십시오. 편집기는 파이썬 파일을 편집하고 저장할 수 있으며, 사용자 코드를 관리하기 위한 고급 기능들(코드 주석 추가 및 삭제, 문법 확인, http://codepad.org/ 를 통해 코드 공유 등등)을 제공합니다. 주요 기능은 다음과 같습니다:
다음 API들을 위한 코드 완성, 문법 구문 강조, 그리고 팝업 도움말:
파이썬
PyQGIS
PyQt5
QScintilla2
osgeo-gdal-ogr
Ctrl+Space: 자동 완성 목록 보기
http://codepad.org/ 를 통해 코드 조각 공유하기
Ctrl+4: 문법 확인하기
검색란 (데스크탑 환경 기본 단축키로 엽니다. 일반적으로 Ctrl+F 조합키를 누르면 됩니다.):
데스크탑 환경 기본 단축키(Ctrl+G 및 Shift+Ctrl+G)를 사용해서 다음/이전 찾기
검색창 입력 시 첫 번째 일치 항목을 자동으로 찾기
검색창을 열 때 처음 찾은 문자열을 선택하도록 설정하기
Esc 키를 눌러 검색창 닫기
객체 조사기: 클래스 및 함수 탐색기
마우스 클릭으로 객체 정의로 가기 (객체 조사기에서)
컨텍스트 메뉴의 Run Script 를 선택해서 전체 스크립트를 실행하기 (이렇게 하면
.pyc
확장자를 가진 바이트코드 파일을 컴파일합니다.)
참고
코드 편집기에서 스크립트 일부 또는 전체를 실행하면 콘솔의 출력 영역에 결과를 산출합니다.
팁
옵션 저장하기
콘솔 위젯 상태를 저장하려면, 닫기 버튼을 사용해서 파이썬 콘솔을 종료해야 합니다. 이렇게 하면 다음 시작 시 도형이 복구되도록 저장할 수 있습니다.