GetPos 메서드의 사용법 자체는 크게 어려울 것이 없습니다.
GetPos 메서드는 현재 커서의 위치를 반환합니다.
pos = hwp.GetPos()
print(pos)
이 함수를 사용하여 한글 문서의 커서의 위치를 확인하면
한글 문서가 위치를 어떻게 확인하는지 이해할 수 있게 됩니다.
위치 정보 확인 방법
먼저 아래 그림과 같은 한글 문서가 있고
커서의 위치는 빨간색 밑줄의 바와 사 사이에 있습니다.
현재 커서의 위치를 확인해보면 다음과 같이 나타납니다.
우선 맨 앞의 0은 생각하지 않고 보시길 바랍니다.
(0, 1, 2)
두번째 숫자는 줄이고
세번째 숫자는 몇 번째 문자의 앞이라는 의미입니다.
단, 시작값은 1이 아닌 0입니다.
한글 개발 문서를 보면 아래와 같이 설명하고 있습니다.
커서를 캐럿이라고 표현하는 것 같습니다.
세 개의 숫자 중 두 번째 숫자는 줄이고
세 번째 숫자는 몇 번째 문자 앞인지의 의미입니다.
아래 그림이 제대로 표현이 되었나 모르겠습니다.
우선 커서의 위치는 두 번째 줄에 있는 세 번째 글자에 위치하고 있습니다.
세 번째의 의미는 아래 그림의 파란색 선을 보시면 됩니다.
두 번째 줄의 세 번째에 위치하지만 결과는
(0, 1, 2)로 표시가 됩니다.
시작값이 0이기 때문에 그렇습니다.
Shift + Enter로 줄 바꿈 했을 때
만약 커서를 [ 파 ] 와 [ 하 ] 사이에 놓고 위치를 살펴보면
(0, 3, 2)가 나타나게 됩니다.
아래 그림과 같이 순서가 메겨지기 때문입니다.
그런데 아래 그림을 살펴보겠습니다.
[ 갸 ] 와 [ 거 ] 사이에 커서가 있습니다.
줄은 6번째 줄 즉, 5번 위치
글자는 3번째 칸 즉, 2번 위치
(0, 5, 2)가 나오거나
비어있는 줄을 인식하지 않는다고 가정하면
(0, 4, 2)가 나와야 합니다.
하지만 결과는 (0, 3, 7)이 나옵니다.
두 번째 값이 3이므로 네 번째 줄이라는 결론이 나옵니다.
그리고 세번째 값이 7이므로 8번째 글자 앞이라는 결론이 나옵니다.
우선 줄바꿈을 Enter로 해야지 줄이 바뀐 것으로 인식하고
Shift + Enter로 줄 바꿈을 하게 되면, 내부적으로는 하나의 문장으로 인식하는 것 같습니다.
그리고 문자의 위치도 아래 그림(보라색 글씨)과 같이 인식하는 것으로 보입니다.
문서의 첫번째 위치
문서의 첫번째 위치에 커서를 놓고 위치를 살펴보겠습니다.
결과가 (0, 0, 0)이 나올 것으로 예상했는데
(0, 0, 16)이 나타납니다.
다양한 환경에서 테스트해보지 못했으므로
문서의 첫번째 위치는 꼭 (0, 0, 0)이 아닐 수 있다고 가정했습니다.
GetPos()가 현재 커서의 위치를 반환하는 함수이고
SetPos()는 지정된 위치로 커서를 이동시킵니다.
hwp.SetPos(0, 0, 0)으로 하면 해당 위치로 커서가 이동합니다.
hwp.SetPos(0,0,0)
이렇게 해도 문서의 맨 처음으로 이동하기는 합니다.
아래와 같이 코드를 작성하면
4번째 문자의 앞으로 커서가 이동해야 하는데 커서는 문서의 맨 처음에서 움직이지 않습니다.
hwp.SetPos(0,0,4)
아래와 같이 코드를 작성해야만 커서가 4번째 글자 앞에 위치합니다.
hwp.SetPos(0,0,19)
왜냐하면 제 환경에서 문서의 시작위치는 (0, 0, 16)이기 때문입니다.
각자의 환경에서 테스트 해보시고
문서의 시작위치를 확인해 보시기 바랍니다.
아무래도 눈에 보이지 않는 무언가가 앞에 더 있는 것 같습니다.
GetPos()와 SetPos()의 첫 번째 인자
두 메서드의 첫번째 인자는 0부터 숫자가 들어갑니다.
하지만 0과 1의 값은 정해져 있습니다.
0은 문서 그 자체이고
1은 눈에 보이지 않는 무언가입니다.
SetPos(1, 0, 0)으로 확인해 보시면 아래와 같이 나타납니다.
표나 각주, 미주 등이 추가될 때마다
해당 표와 같은 것들이 숫자를 부여받게 되는데
그것이 첫 번째 인자로 사용됩니다.
아래 그림과 같이 표를 하나 만들고
표 안에 커서를 위치시킨 후 GetPos()로 위치를 확인하면
다음과 같습니다.
(2, 0, 0)
앞서 0과 1은 이미 정해져 있다고 했고,
표가 하나 만들어지면서 표는 2로 위치가 정해진 것입니다.
아래 그림과 같이 두 칸을 가지고 있는 표를 만들고
표의 두 번째 칸에 커서를 두고 위치를 확인해 보겠습니다.
그럼 (3, 0, 0)이 됩니다.
이와 같이 표의 셀이 늘어난다거나 미주, 각주 등이 달린다거나 할 때
각각의 것들은 숫자를 부여받게 되고
그 숫자를 통해 SetPos() 함수를 사용하여 위치를 이동할 수 있습니다.
이 부분은 표를 여러 칸 만들어 본다거나
미주, 각주, 머리말, 꼬리말 등을 만들어 보시며 테스트해보시길 바랍니다.
몇 번 테스트해보시면 각 인자의 역할을 확인할 수 있으실 겁니다.
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
'파이썬(Python)' 카테고리의 다른 글
[ 파이썬 한글 자동화 ] 숫자를 금액으로 바꾸기 : 금100,000원으로 바꾸기 (0) | 2024.10.14 |
---|---|
[ 파이썬 한글 자동화 ] 숫자로 입력한 금액을 한글 금액으로 바꾸기 (0) | 2024.10.13 |
[ 파이썬 한글 자동화 ] 한글 문서(Hwp) 안의 표 개수 확인하기 (0) | 2024.10.11 |
[ 파이썬 한글 자동화 ] 실행 중인 한글(Hwp, Hwpx) 프로그램 조작하기 (2) | 2024.10.10 |
[ Tkinter ] 파이썬(Python) Tkinter에서 Treeview 정렬 기능 구현하기 : 헤더(제목) 클릭 시 오름차순/내림차순 정렬 (0) | 2024.10.08 |