본문 바로가기

파이썬186

hwpx 모듈 개발 중에 버그 하나를 해결하면서.. 2023. 11. 15. 개발일기 hwpx 모듈 개발에 착수한지 일주일쯤 되었는데, 예상하지 못한 몇 가지 문제를 우연히 발견하게 되었다. Hwp라는 클래스를 만들면서, 생성자(__init__) 안에서 win32로 한/글 오토메이션 오브젝트를 생성하고 인스턴스가 실행하는 모든 메서드는 내부의 hwp 오브젝트와 연결되게끔 매핑을 해두었는데, 오토메이션 프로퍼티 중 HeadCtrl과 LastCtrl 두 개가 말썽이었다. Hwp인스턴스.HeadCtrl이 클래스 내부에 생성되어 있는 hwp오브젝트.HeadCtrl과 같지 않다는 것을 발견했다. 새 문서를 Hwp로 열었는데, 표를 몇 개 추가한 후 여전히 인스턴스.LastCtrl이 "단 정의"라는 충격적인 결과를 보는 와중에도, hwp.LastCtrl.Next.U.. 2023. 11. 15.
아래아한글 업무자동화를 위한 파이썬 모듈, pyhwpx 업무자동화 관련한 교육을 몇 회 진행해보면서 강하게 느낀 부분 중 하나는, 일반 사용자 대부분이 "긴 코드"에 대해 불편함을 느낀다는 건데요. 정부부처, 공공기관이나 기관 연수원에서는 장기간의 교육은 잘 만들어지지 않고, 7~8시간 안에 파이썬 기초부터 업무자동화 중급까지 진행해야 하는 상황, 업무자동화에 유용하게 써먹었던 이런저런 함수들을 모아서 간단한 클래스로 구현해놓고, pypi에 업로드해 두려고 합니다. 문서화나 동영상 촬영도 틈틈이 해 보고 싶고요. 우선 사용법은 아래와 같습니다. 1. 터미널에서 pip install pyhwpx로 모듈을 설치한다. 2. 파이썬에서 from pyhwpx import Hwp로 클래스를 임포트한다. 3. hwp = Hwp()로 한/글을 연다. 4. 한/글에서 제공하.. 2023. 11. 7.
파이썬의 리스트도 표현할 수 있나? # 투두리스트 앱 만들기 앞선 포스팅에서는 간단히 rx.heading이나 rx.text를 이용해 화면에 글자를 출력해보았으며 State라는 클래스와 클래스 변수인 Var를 이용해 동적인 웹앱, Counter를 구현해보았다. 그럼 이런 생각도 해볼 수 있을텐데? 단순한 텍스트 목록은 rx.text를 나열하면 될텐데, ["a", "b", "c"] 같은 리스트도 표현할 수 있을까? (직접 공식문서를 찾아 읽어보신 분이라면, 어렵지 않게 구현하실 것) 이 때는 우리가 사용할 또 다른 레이아웃 컴포넌트, 바로 rx.foreach가 필요하게 되는 시점이다. (굳이 비유하면 파이썬의 for문과 map 함수를 합친 느낌이다.) 참고로 rx.foreach는 단순한 파이썬의 for문과는 살짝 다르다. 무엇이 다른고 하니, rx.foreach(리스.. 2023. 10. 3.
간단한 동적 웹앱 만들어보기 : Counter 이번 포스팅에서는 아래와 같은 페이지를 만들어 보고, State의 사용법에 대해 간단히 이해해보고자 한다. 아래와 같은 코드로 index 함수를 만들었다. import reflex as rx def index(): return rx.vstack( # 행 방향으로 나열하는 레이아웃 컴포넌트 rx.heading("Counter"), # 제목 rx.hstack( # 열 방향으로 나열하는 레이아웃 컴포넌트 rx.button("-", color_scheme="red"), rx.heading("0"), rx.button("+", color_scheme="green") ) ) app = rx.App() app.add_page(index) app.compile() 참고로 위에서 사용한 vstack, hstack은 각각.. 2023. 10. 3.
reflex 웹페이지는 기본적으로 클래스 하나, 함수 하나로 구성된다. reflex는 프론트엔드와 백엔드의 구분이 다소 모호(?)한 pure-python fullstack webframework이다. reflex로 만드는 웹앱은 기본적으로 State라는 클래스 하나, 그리고 index라는 함수 하나로 구성된다. 이를 이해하기 위해서는 가장 간단한 앱 하나를 만들어보는 것이 좋다. 우선 State 없이 간단한 페이지함수인 index를 만들어보자. import reflex as rx def index(): return rx.heading("Hello world!") app = rx.App(state=State) app.add_page(index) app.compile() python 코드로 구성된 간단한 소스이지만, 이는 리플렉스를 구성하고 있는 node.js, React, N.. 2023. 10. 3.
[원데이클래스 안내] 9.2(토) 동대구역 앞 보고서 작성 자동화 원데이 클래스 처음으로 공지포스팅을 올려봅니다. 9월2일 토요일 오후 2시 동대구역 인근에서 보고서 작성 관련 업무자동화 튜토리얼로 원데이클래스를 진행하게 되었습니다. 이번까지만 오프라인으로 진행하고, 앞으로는 줌 등으로 온라인 과정도 개설하겠습니다. 접수는 온오프믹스 플랫폼을 활용하오니, 관심 있으신 야근러 분들의 많은 참여 바랍니다^^ 입문자를 대상으로 커리큘럼을 짰지만, 참석하신 분들의 수준을 고려하여 유연하게 커리큘럼 수정 예정입니다. 2023. 8. 31.
[오프라인 원데이클래스 공지] 동대구 신암동 파스쿠치에서 주말에 만나요^^ 업무자동화 기초 원데이클래스(엑셀, 아래아한글) - 온오프믹스 :: 모임문화 플랫폼 (onoffmix.com) 업무자동화 기초 원데이클래스(엑셀, 아래아한글) 세상의 모든 모임 '온오프믹스' onoffmix.com 모두들 안녕하신가요? 저는 동대구로 이사와서 학원강사 2개월차입니다. 원장님과 면접 때 짐작은 했지만, 제가 가장 좋아하는 분야인 업무자동화를 가르치고 있지는 않아요. (그리고 앞으로도 이 분야를 다루지는 않을 것 같아요. 학원에서 재직자 대상 교육은 배제하고 있거든요.) 그래서 지금은 파이썬 기초/응용문법부터 데이터분석과 시각화, 머신러닝 및 딥러닝 등의 과정으로 업체연계 프로젝트 포함 3개월 정도 진행을 하고 있어요. 어제 업체 3개 중 한 곳 소장님과 온라인미팅을 가졌어요. 오는 월요일에.. 2023. 6. 17.
[QnA] 참조조항번호를 일괄변경하는 간단한 방법 안녕하세요 혹시 영향 있는 조항도 따라서 잡아주나요? 제 1조 1항 : ㄱㄴㄷ 2항 : ㄹㄹㄹ 제 2조 1항 : 제1조 2항에 의해 ㅇㅇ한다 에서 제1조 2항이 사라지면 제2조 1항 : 제1조1항에 의해 ㅇㅇ한다 로 자동으로 바뀌게도 가능한걸까요? 가능합니다. 아래처럼 누름틀을 매겨두고 간단한 함수를 실행하면 의도하시는 액션을 구현할 수 있겠습니다. (엄밀히 말해, "실시간 완전자동"은 아니에요ㅎㅎ) 예를 들어 아래와 같은 문서가 있다고 가정합시다. 제3조제1항 안의 붉은색 숫자 두 개는 제2조제1항제2호를 참고하고 있는데요. 네 개의 붉은색 글자 안에 모두 누름틀이 매겨져 있습니다. 위에서부터 차례대로 "정의_src", "건축물_src", "정의_dst", "건축물_dst"라는 누름틀을 임의로 매겨놓았.. 2023. 4. 25.
[인프런QnA] 개체 여백 조정 방법 표 혹은 그림이든 개체 여백조정을 하고자 합니다. 매크로정의하고 코드편집에 따라서 해보았는데요 잘 동작하지 않네요..ㅠㅠ 아래는 개체 바깥 여백조정을 위한 함수를 만들어 본 예제입니다. 바깥 윗여백만 조정하는 것으로 했습니다. ####################### def Change_Object_Blank(): hwp.HAction.GetDefault("CellBorderFill", hwp.HParameterSet.HCellBorderFill.HSet) hwp.HParameterSet.HCellBorderFill.Hset.SetItem("ApplyTo", 1) hwp.HAction.Execute("CellBorderFill", hwp.HParameterSet.HCellBorderFill.HSet) .. 2023. 3. 30.