여는 글
파이썬으로 한글을 조작하는 경우, 아래 스크린샷처럼 드물게 한글 화면이 검게 보이는 경우가 있다. 재밌는건 이 상태로도 한글 조작 자체는 가능하다는 점. 때문에 조작하는데 크게 문제는 없지만, 아무래도 화면이 보이지 않으니 제대로 처리가 이뤄지고 있는지 알기가 어렵다.
때문에 개발자 포럼에 문의를 했더니, 다행히 다른 분들께서 해결책을 제시해주셨는데, 이러한 문제는 win32gui를 사용하는 경우에 발생한다고 한다.
해결방법
통상 인터넷에서 사람들이 파이썬/Win32Com을 통해 한글을 조작할 때 안내를 주는 방식은 아래와 같다
- 파이썬으로 win32com 라이브러리를 불러온다.
- win32com을 통해 한글을 실행한다.
- win32gui를 통해 방금 열린 한글 창을 조작할 수 있는 변수에 담는다.
내 경우에는 한글에도 엑셀과 같이 창의 가시성을 결정할 수 있는 속성이 있는 줄 몰랐기에 win32gui를 사용해왔는데, 이게 문제가 되었던 것. 때문에 win32gui 대신, 아래와 같이 코드를 작성해주는 편이 좋다.
import win32com.client as com
hwp = com.dynamic.Dispatch("HWPFrame.HwpObject")
hwp.XHwpWindows.Item(0).Visible = True
※ 창을 보이지 않게 하려면 값을 False를 주면된다.
왜 이런일이 발생하는가?
해결은 되었는데 이런 문제는 대체 왜 발생했던건지 이유까지는 없어서, 왜 그런건지 Reddit 쪽을 알아봤다. 명확하게 이거다 싶은 답변은 없긴한데 가능성이 높은 답변이 하나 있었다 : “몇몇 프로그램들의 경우, 활성화되지 않으면 화면을 지워버려 리소스 사용량을 줄이는 경우가 있다. 특히 게임들의 경우가 그러하다.”
한글 2018도 아마 이런 최적화 기능때문에 보이지 않는건가 싶다. 한글2018을 매크로로 처음 구동시 숨겨진 상태로 오픈되는 걸 보면 아무래도 백그라운드 동작을 상정한 것으로 보이며, 그렇다면 당연히 화면을 표시할 이유도 없을 것 같다. 때문에 한글 프로그램 내부의 정상적인 접근 경로(위 코드)가 아닌 별도의 방법으로 강제로 활성화 시키게 될 경우(win32gui 사용)에는 화면이 검게 보이는 것으로 추정...
'컴퓨터 & 코딩 공부 > 파이썬' 카테고리의 다른 글
파이썬 Library/API - Pyinstaller(실행파일 제작 / 소스코드 보호) (0) | 2024.04.19 |
---|---|
파이썬 Library/API - pyWin32로 엑셀 조작하기 (0) | 2024.04.19 |
파이썬 Library/API - pyWin32로 한글 조작하기 (1) | 2024.04.19 |
파이썬 Library/API - pyWin32(엑셀/한글 조작용 API) 기초 원리 정리 (0) | 2024.04.19 |
파이썬 Library/API - 오픈소스 저작권 (1) | 2024.04.19 |