해결된 질문
작성
·
394
답변 2
1
HR님 안녕하세요?
말씀하신 부분은 가능할 것 같습니다.
다만, 조금만 더 상세히 알려주시면 좋겠습니다.
우선 한/글에서 별도의 모듈 없이 대화상자를 띄우는 명령어가 있습니다.
시연화면은 아래와 같고,
코드는 아래와 같습니다.
# %pip install hwpx
from hwpx import Hwp
hwp = Hwp()
def 대화상자():
msgbox = hwp.XHwpMessageBox # 메시지박스 생성
msgbox.string = "엑셀의 데이터를 한/글 필드에 매핑합니다." # 메시지 설정
msgbox.Flag = 1 # [확인, 취소] 버튼 설정
msgbox.DoModal() # 메시지박스 띄워주기
return msgbox.Result # 선택값 리턴
result = 대화상자()
if result == 1:
print("필드 업데이트 완료")
elif result == 2:
print("취소")
다만, 버튼이 계속해서 떠 있어야 하고, 여러 번 "다음" 버튼을 눌러야 하는 경우라면
tkinter나 PyQt 같은 별도의 GUI 모듈을 사용해서 다이얼로그를 생성해줘야 합니다.
작업하시고자 하는 내용에 대해 조금만 더 상세히 알려주시면
추가로 도움드릴 수 있을 것 같습니다.
행복한 하루 되세요^^
0
간단히 아래와 같이 코딩해보았습니다.
코드 자체가 복잡하지는 않지만, HR님의 실행환경에 따라
다소간 코드 수정이 필요하실 듯 싶습니다.
시연화면은 아래와 같고,
사용한 코드는 아래와 같습니다.
import os
import tkinter as tk
from hwpx import Hwp
import pandas as pd
hwp = Hwp()
hwp.open(os.path.join(os.getcwd(), "target.hwp"))
df = pd.read_excel("./취미.xlsx")
def get_row_num(df):
return df[df["이름"]==hwp.get_field_text("이름")].index[0]
def set_next(df):
cur_col = get_row_num(df)
hwp.put_field_text(
hwp.get_field_list(),
"\x02".join(list(df.iloc[(cur_col + 1) % len(df)]))
)
def click(df):
set_next(df)
win = tk.Tk()
button = tk.Button(win, text="다음", command=lambda: click(df))
button.grid(column=0, row=0)
win.mainloop()
궁금하신 부분이 있거나, 실행이 되지 않는다면
추가질문 남겨주시기 바랍니다.
행복한 하루 되세요^^
답변해주셔서 감사합니다!
우선 좀 더 구체적으로 말씀드리자면, 제가 생각하고 있는 방식은 '버튼이 계속해서 떠 있어야 하고, 여러번 "다음" 버튼을 눌러야 하는 경우'가 맞는 듯 합니다.
예를들면 별도의 GUI가 떠있는 상태에서 셀필드.hwp의 내용이 취미.xlsx상의 '마크, 남, 1984년 05월 14일, VR' 의 내용으로 채워진 상태에서, GUI에서 다음 버튼을 누르면 실시간으로 '빌, 남, 1955년 10월 28일, 기부'로 바뀌는 상태를 희망하고 있습니다 ㅠㅠ