인프런 커뮤니티 질문&답변

YongJun(Passion)님의 프로필 이미지
YongJun(Passion)

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

한/글 문서를 불러오고, 저장하고, 닫기

음 Action에 없는 내용들은 어떻게 활용해야할지 질문드립니다.

해결된 질문

작성

·

108

1

현재 문제

  1. 자동적으로

    image.png

    여러개의 선택상자를 입력하고

  2. 어떤것이 체크되었는지 확인하여 리턴할 것을 정해야하는 함수를 구현하려 합니다. 1번, 3번이 선택 되었다면 1, 3을 리턴하는 방식을 구현하려 했습니다.

 

제가 질문드린 내용을 구현하려면

[HwpAutomation.hwp 내부 사진]

image.png

다음사진에서 IHwpObject - IXHwpDocuments - IXHwpFormCheckButtons의

IXHwpFormCheckButton:양식 개체 체크 버튼 오브젝트에서

  1. caption값을 수정하는 방법

  2. value 값을 리턴하는 것

     

     

    여기에서 사실 XHwpDocuments.XHwpFormCheckButtons를 해야한다고 생각했는데 안되는거 같아서 혹여 이 부분을 참고하여서 개발을 하려면 어떻게 이해를 해야할까요 ㅠㅠ

     


답변 2

2

일코님의 프로필 이미지
일코
지식공유자

안녕하세요? 한/글의 양식개체 사용법은 알고보면 굉장히 간단합니다.

(다만, 직관적이라는 거짓말은 나오지 않네요ㅜ)

 

우선 아래와 같이
체크박스가 다섯 개 들어있는 문서가 있다고 가정해보겠습니다.

image.png

 

1_ caption 값을 수정하는 방법

hwp.XHwpDocuments.Item(0).XHwpFormCheckButtons.Item(0).Caption = "새 캡션이름"

위와 같이 바꾸시면 됩니다. (문서 첫 번째 체크박스의 캡션이 "새 캡션이름"으로 변경됩니다.)

조회는 할당 없이 바로 .Caption만 실행하시면 되고요.

라인이 너무 길어지므로 아래와 같이 끊어서 코딩해도 보기 좋습니다.

>>> doc = hwp.XHwpDocuments.Item(0)
>>> cbox = doc.XHwpFormCheckButtons
>>> print(cbox.Item(1).Caption)

옵션2
녹화_2024_08_01_20_36_02_156.gif

간단하죠?

 

2_ 체크여부 조회하기

.Caption과 동일하게 .Value 속성으로 조회 및 변경하실 수 있습니다.

녹화_2024_08_01_20_44_38_625.gif

 

3_ 첨부하신 그림 이해하는 방법

이해랄 것도 없지만,

IHwpObject는 우리가 사용중인 hwp 인스턴스를 의미합니다.

하위에 파란색 개체 두 개, .XHwpDocuments.XHwpWindows

각각 한 개 이상의 XHwpDocument, XHwpWindow들을 담는 그릇 같은 거고요.

그 안에서 .Item(idx) 메서드로 idx번째 문서 또는 창을 조회하실 수 있습니다.

트리를 자세히 보시면
IHwpObject-XHwpDocuments - XHwpDocument - IXHwpFormCheckButtons - IXHwpFormCheckButton 순으로 5단계로 계층이 이어져 있죠?

그래서 `hwp.XHwpDocuments.Item(0).XHwpFormCheckButtons.Item(0) 이라고 길게 실행해줘야 비로소 체크박스 개체가 하나 선택됩니다ㅜ

그리고 혹시 궁금해하실까봐 덧붙이는데, 개체 앞에 붙은 X나 I, H 같은 대문자는 단순히 윈도우 프로그래밍에서 특정 타입이나 용도를 나타내는 접두어입니다. 예를 들어 I는 COM인터페이스를 가리키고, H는 핸들(시스템리소스 참조), X는 익스텐션을 뜻한다든지.. 그런데 이걸 파이썬에서 사용하게 될 때는 모종의 이유로 일부 접두어가 빠지더라고요. (파이썬이 바꾸는 건 아니고 MakePy의 동작인 것 같습니다^^;) 그래서, IDE의 자동완성을 많이 활용하시면 훨씬 편합니다.

추가로 궁금한 건 댓글 남겨주세요.

 

그럼 마지막으로 어느 체크박스가 선택된 상태인지 리턴하는 코드를 보여드리고 마치겠습니다.

cbox = hwp.XHwpDocuments.Item(0).XHwpFormCheckButtons

# 전체 체크박스값 조회(체크:1, 미체크:0)
print([cbox.Item(i).Value 
 for i in range(cbox.Count)])

# 체크된 박스번호(1부터)만 리턴①
print([i+1 for i in range(cbox.Count)
 if cbox.Item(i).Value == 1])

# 체크된 박스의 캡션만 리턴
print([cbox.Item(i).Caption 
 for i in range(cbox.Count)
 if cbox.Item(i).Value == 1])
녹화_2024_08_01_21_09_54_552.gif

 

도움이 되었길 바랍니다.

행복한 하루 되세요~

트리 부분도 상당히 의문이였는데 설명 정말 감사합니다.

1

안녕하세요, 인프런 AI 인턴입니다.

YongJun(Passion)님, 질문해주신 한글 오토메이션의 체크 버튼 오브젝트 (IXHwpFormCheckButton)의 caption 값을 수정하고 value 값을 리턴하는 방법과 관련해서는 제공된 정보 내에서 구체적인 코드 예제 또는 직접적인 해결 방법을 찾기 어려운 상황입니다.

하지만, 이와 유사한 맥락에서 다룬 내용이 있어 그 쪽으로 조금의 통찰을 제공해드릴 수 있을 것 같습니다. 문서의 체크 버튼 또는 양식 개체와 관련된 내용을 다루는 경우, 특정 속성을 수정하거나 값을 얻어오기 위해서는 해당 객체의 인터페이스와 메소드를 적절히 이해하고 활용해야 합니다.

제공된 한글 오토메이션 개발 문서에서 볼 때, IXHwpFormCheckButton과 같은 객체는 양식 개체를 프로그래매틱하게 제어할 수 있게 하는 인터페이스를 제공할 것입니다. 이 인터페이스를 통해 각 체크 버튼의 제목(caption)을 변경하거나 체크 여부(value)를 가져오는 작업을 할 수 있을 겁니다.

그러나, 구체적인 코드 실현 방법이나 예시가 없어 직접적인 답변을 제공하기 어려운 점 양해 부탁드립니다.

이와 관련하여 ‘움짤로 빠르게 배우는 파이썬-아래아한글 자동화 레시피’ 강의 내에서 더 구체적인 예제나 지침이 제공되었는지 확인해보시거나, 해당 강의의 질문&답변 섹션에 추가 질문을 남겨보시기 바랍니다. 아울러 한글 제어와 관련된 개발자 포럼이나 커뮤니티에서도 유사한 상황에 대한 해결책을 찾아볼 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

YongJun(Passion)님의 프로필 이미지
YongJun(Passion)

작성한 질문수

질문하기