Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter Text 위젯에서 사용자 입력을 가져오는 방법

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" 버튼을 클릭하면 텍스트 박스에 입력된 내용이 콘솔(터미널)에 그대로 출력됩니다.

Tkinter Text 위젯에서 사용자 입력을 가져오는 방법

핵심 포인트 정리

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