Tkinter는 개발자가 로컬 시스템 내부의 파일과 상호작용할 수 있도록 지원하는 파이썬 표준 GUI 라이브러리입니다. 이 글에서는 Tkinter의 filedialog 모듈과 win32api 모듈을 활용하여 파일의 하드카피(종이 인쇄물)를 출력하는 방법을 단계별로 알아보겠습니다.
사전 준비: 필요한 모듈 설치
먼저 코드에서 사용할 패키지들을 환경에 설치해야 합니다. win32api는 윈도우 운영체제의 API에 접근할 수 있게 해주는 모듈로, 다음 명령어로 설치할 수 있습니다.
pip install pywin32
tkinter와 filedialog는 파이썬에 기본으로 포함되어 있으므로 별도의 설치가 필요하지 않습니다.
전체 예제 코드
#필요한 라이브러리 임포트
from tkinter import *
from tkinter import filedialog
import win32api
#tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
win.title('Print Hard Copy')
win.geometry("700x400")
#파일을 선택하고 인쇄하는 함수 정의
def print_file():
file = filedialog.askopenfilename(initialdir="/", title="Select any file",
filetypes=(("Text files", "*.txt"), ("all files", "*.*")))
if file:
#프린터로 하드카피 출력
win32api.ShellExecute(0, "Choose a File", file, None, ".", 0)
#인쇄 이벤트를 실행할 버튼 생성
button = Button(win, text="Choose a File to Print", command=print_file).pack(pady=20)
#윈도우(프레임) 유지
win.mainloop()코드 동작 원리
이 코드의 핵심 흐름은 다음과 같습니다.
1. 윈도우 생성: Tk()로 700x400 크기의 기본 창을 만들고 제목을 설정합니다.
2. 파일 선택 다이얼로그: filedialog.askopenfilename() 함수를 호출하면 파일 탐색기가 열립니다. initialdir 옵션으로 시작 경로를 지정하고, filetypes 옵션으로 텍스트 파일(.txt)을 우선적으로 보여주되 모든 파일 형식(*.*)도 선택 가능하도록 설정했습니다.
3. 인쇄 실행: 사용자가 파일을 선택하면 win32api.ShellExecute() 함수가 해당 파일을 시스템 기본 프린터로 전송하여 인쇄를 시작합니다. 파일을 선택하지 않으면 아무 작업도 수행되지 않습니다.
실행 결과
위 코드를 실행하면 'Choose a File to Print'라는 버튼이 포함된 창이 나타납니다. 버튼을 클릭하면 파일 탐색기 폴더가 열리고, 여기서 인쇄하고 싶은 파일을 선택하면 곧바로 프린터로 하드카피가 출력됩니다.
이 방법은 간단한 문서 자동 인쇄 시스템이나 사무용 파이썬 애플리케이션을 만들 때 매우 유용하게 활용할 수 있습니다. 단, win32api는 윈도우 환경에서만 동작하므로 맥이나 리눅스에서는 다른 인쇄 라이브러리를 사용해야 한다는 점을 참고하세요.