Tkinter 애플리케이션에서 텍스트 상자(Text 위젯)에 입력된 내용을 파일로 저장하거나, 반대로 파일의 내용을 텍스트 상자로 불러오는 기능은 메모장 같은 간단한 텍스트 편집기를 만들 때 필수적입니다. 이 글에서는 open() 함수와 Tkinter의 insert(), get() 메서드를 활용해 이 과정을 구현하는 방법을 단계별로 살펴보겠습니다.
구현 단계
- tkinter 프레임(윈도우)의 인스턴스를 생성합니다.
- win.geometry() 메서드를 사용해 윈도우의 크기를 설정합니다.
- open_text()라는 사용자 정의 함수를 정의합니다. 이 함수는 텍스트 파일을 '읽기(r)' 모드로 열어 내용을 content 변수에 저장한 뒤, insert() 메서드를 통해 해당 내용을 텍스트 상자에 삽입합니다.
- save_text()라는 또 다른 사용자 정의 함수를 정의합니다. 이 함수는 write() 메서드를 사용해 텍스트 상자의 현재 내용을 텍스트 파일에 저장합니다.
- Text() 메서드로 지정한 높이(height)와 너비(width)를 가진 텍스트 상자 위젯을 생성합니다.
- open_text() 함수를 호출하는 '파일 열기' 버튼을 만듭니다.
- save_text() 함수를 호출하는 '파일 저장' 버튼을 만듭니다.
- 마지막으로 mainloop()를 실행해 애플리케이션 창을 구동합니다.
예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
# tkinter 윈도우 인스턴스 생성
win = Tk()
win.geometry("700x250")
def open_text():
# 텍스트 파일을 읽기 모드로 열기
text_file = open("test.txt", "r")
content = text_file.read()
my_text_box.insert(END, content)
text_file.close()
def save_text():
# 텍스트 파일을 쓰기 모드로 열어 저장
text_file = open("test.txt", "w")
text_file.write(my_text_box.get(1.0, END))
text_file.close()
# 텍스트 상자 위젯 생성
my_text_box = Text(win, height=10, width=40)
my_text_box.pack()
# 파일 열기 버튼 생성
open_btn = Button(win, text="Open Text File", command=open_text)
open_btn.pack()
# 파일 저장 버튼 생성
save = Button(win, text="Save File", command=save_text)
save.pack()
win.mainloop()실행 결과
코드를 실행하면 다음과 같은 화면이 나타납니다.

이제 'Open Text File' 버튼을 클릭하면 test.txt 파일이 열리고, 파일의 내용이 텍스트 상자에 표시됩니다.

다음으로 텍스트 상자 안에 새로운 문장을 입력한 뒤 'Save File' 버튼을 클릭하면, 입력한 내용이 test.txt 파일에 그대로 저장됩니다.

핵심 포인트 정리
파일을 열 때는 목적에 맞는 모드를 사용하는 것이 중요합니다. 내용을 불러올 때는 'r'(읽기) 모드를, 저장할 때는 'w'(쓰기) 모드를 사용합니다. 특히 'w' 모드는 기존 파일 내용을 덮어쓰므로 주의가 필요합니다. 또한 get(1.0, END)은 텍스트 상자의 첫 번째 줄 첫 번째 문자부터 끝까지 전체 내용을 가져오는 구문입니다. 작업이 끝난 후에는 반드시 close()로 파일을 닫아 리소스 누수를 방지하는 것이 좋은 습관입니다.