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" 입니다. 이 차이는 가져온 값을 비교하거나, 저장하거나, 추가 줄 바꿈을 받아서는 안 되는 코드에 전달할 때 중요합니다.
가져온 입력의 유효성 검사하기
애플리케이션이 의미 있는 내용을 요구한다면 문자열의 다듬어진 뷰를 확인하세요. if not user_input.strip(): 입니다. 이것은 공백만 있는 입력을 빈 것으로 취급합니다. 원래의 간격이나 줄 바꿈이 중요하다면 user_input 을 변경하지 마세요. 다듬어진 값은 확인 용도로만 사용하되, 애플리케이션이 의도적으로 사용자의 텍스트를 정규화하려는 경우는 예외입니다. 확인에 실패하면 인터페이스에 피드백을 표시하고, 통과하면 원래 값의 처리를 계속하세요.