HOWTO · Tkinter

Tkinter 텍스트 상자에서 입력을 얻는 방법

이 글에서는 get 메소드를 사용해 Tkinter 텍스트 상자에서 입력을 가져오는 방법을 살펴봅니다. 정확한 텍스트 검색을 위해 시작 및 끝 인덱스를 지정하는 방법, 유효성 검사를 구현하는 방법, 사용자 친화적인 인터페이스로 Python 애플리케이션을 향상시키는 방법을 배웁니다. Tkinter 프로젝트에서 사용자 입력을 효과적으로 캡처하기 위한 실용적인 코드 예제와 자세한 설명을 만나보세요.

이 페이지의 내용

Tkinter Text 위젯을 읽으려면 시작 인덱스와 종료 인덱스로 그 get 메소드를 호출합니다. 전체 내용이 필요하면 text_box.get("1.0", "end-1c") 를 사용합니다. 1.0 은 시작을 나타내고, end-1c 는 위젯의 마지막 줄 바꿈을 제외합니다.

Tkinter Text 위젯으로 텍스트 가져오기

이 완전한 창에서는 사용자가 여러 줄을 입력하고 버튼으로 가져올 수 있습니다. 콜백은 반환된 문자열을 user_input 에 유지합니다. print 호출은 애플리케이션에 필요한 처리로 바꾸세요.

import tkinter as tk

def get_input():
    user_input = text_box.get("1.0", "end-1c")
    print("User Input:", user_input)

root = tk.Tk()
root.title("Read Text Input")

text_box = tk.Text(root, height=8, width=40)
text_box.pack(padx=8, pady=8)

get_button = tk.Button(root, text="Get Input", command=get_input)
get_button.pack(pady=(0, 8))

root.mainloop()

이 GUI 예제는 제공된 런타임 증거에서 실행되지 않았습니다. 설명은 Tkinter의 인덱스 의미를 따릅니다.

첫 번째 인덱스는 포함되고, 종료 인덱스는 검색이 중단되는 위치를 나타냅니다. get 은 단일 인덱스도 허용합니다. 종료 인덱스가 없으면 전체 위젯이 아니라 해당 위치의 문자를 반환합니다.

시작 및 종료 인덱스 선택하기

Tkinter 텍스트 인덱스는 line.column 형식을 사용합니다. 1.0 은 첫 번째 줄의 첫 번째 문자를 의미하고, 2.0 은 두 번째 줄의 시작을 의미합니다. 따라서 text_box.get("1.0", "2.0") 은 줄 바꿈이 있으면 그것까지 포함하여 첫 번째 줄을 선택합니다. 더 작은 범위를 읽으려면 더 뒤의 줄과 열을 선택하세요. 종료 위치는 반환되는 텍스트에 포함되지 않습니다.

끝의 줄 바꿈 제외하기

Text 위젯은 사용자가 텍스트를 입력하지 않았을 때도 항상 끝에 줄 바꿈을 유지합니다. "end" 까지 읽으면 그 마지막 줄 바꿈이 포함됩니다. 마지막 문자 하나만 생략하려면 종료 인덱스로 "end-1c" 를 사용합니다. 동등한 Tkinter 식은 tk.END + "-1c" 입니다. 이 차이는 가져온 값을 비교하거나, 저장하거나, 추가 줄 바꿈을 받아서는 안 되는 코드에 전달할 때 중요합니다.

get 메소드로 가져온 Tkinter Text 위젯 입력

get 메소드로 Tkinter Text 위젯에서 가져온 부분 텍스트

가져온 입력의 유효성 검사하기

애플리케이션이 의미 있는 내용을 요구한다면 문자열의 다듬어진 뷰를 확인하세요. if not user_input.strip(): 입니다. 이것은 공백만 있는 입력을 빈 것으로 취급합니다. 원래의 간격이나 줄 바꿈이 중요하다면 user_input 을 변경하지 마세요. 다듬어진 값은 확인 용도로만 사용하되, 애플리케이션이 의도적으로 사용자의 텍스트를 정규화하려는 경우는 예외입니다. 확인에 실패하면 인터페이스에 피드백을 표시하고, 통과하면 원래 값의 처리를 계속하세요.