Tkinter에서는 Text 속성을 사용해 텍스트 위젯을 손쉽게 만들 수 있습니다. 하지만 GUI 애플리케이션을 개발하다 보면, 사용자가 텍스트 위젯에 입력한 내용을 프로그램 내부로 가져와야 하는 경우가 자주 발생합니다.
텍스트 위젯의 입력값은 .get() 메서드를 통해 얻을 수 있습니다. 이때 가져올 텍스트의 범위를 지정해야 하는데, 일반적으로 시작 위치는 "1.0"(1행 0열, 즉 텍스트의 맨 처음), 끝 위치는 END 또는 "end-1c"로 지정합니다. 특히 "end-1c"를 사용하면 텍스트 끝에 자동으로 추가되는 개행 문자를 제외하고 깔끔하게 값을 가져올 수 있습니다.
예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
# tkinter 윈도우(프레임) 인스턴스 생성
win = Tk()
win.geometry("700x300")
def get_input():
value = my_text_box.get("1.0", "end-1c")
print(value)
# 텍스트 박스 위젯 생성
my_text_box = Text(win, height=5, width=40)
my_text_box.pack()
# Comment 버튼 생성 - 클릭 시 get_input() 함수 호출
comment = Button(win, height=5, width=10, text="Comment", command=lambda: get_input())
# command=get_input()은 버튼이 눌릴 때까지 대기한 뒤,
# 입력된 텍스트를 콘솔에 출력합니다.
comment.pack()
win.mainloop()실행 결과
위 코드를 실행하면 화면에 텍스트 박스가 나타나고, 사용자의 입력을 받아들입니다. 이후 "Comment" 버튼을 클릭하면 텍스트 박스에 입력된 내용이 콘솔(터미널)에 그대로 출력됩니다.

핵심 포인트 정리
- .get("1.0", "end-1c") : 텍스트 위젯의 전체 내용을 개행 문자 없이 가져옵니다.
- "1.0" : 1행 0열을 의미하며, 텍스트의 시작 위치입니다.
- "end-1c" : 텍스트 끝에서 마지막 문자(자동 추가된 개행 문자) 하나를 제외한 위치입니다.
- command=lambda: 함수명 : 버튼 클릭 시점에 함수가 실행되도록 지연 바인딩하는 방식입니다.