Tkinter 애플리케이션에서 위젯(widget)은 확장 기능과 속성을 추가하는 것만으로 손쉽게 구성할 수 있습니다. 그중 Text 위젯은 여러 줄로 된 사용자 입력을 받을 때 사용되는 대표적인 위젯입니다. 다만 입력되는 텍스트가 길어지면 화면에 모두 표시하기 어렵기 때문에, 스크롤바(Scrollbar)를 함께 연결해 주는 것이 좋습니다.
ScrolledText 위젯이란?
Tkinter 라이브러리에는 이러한 불편함을 해결해 주는 ScrolledText 위젯이 기본으로 포함되어 있습니다. ScrolledText는 Text 위젯과 Scrollbar 위젯을 하나로 결합한 형태로, 별도의 스크롤바 설정 없이도 텍스트를 자유롭게 스크롤하며 볼 수 있는 기능을 제공합니다.
ScrolledText를 사용하려면 먼저 tkinter.scrolledtext 모듈에서 해당 클래스를 임포트해야 합니다. 사용 방법은 일반 Text 위젯과 거의 동일하며, Text 위젯에서 지원하는 모든 속성과 메서드를 그대로 활용할 수 있다는 장점이 있습니다.
예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
from tkinter.scrolledtext import ScrolledText
from lorem_text import lorem
# tkinter 프레임 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
# 윈도우 제목 설정
win.title("Scrolled Text")
# ScrolledText 위젯 추가
text = ScrolledText(win, width=40, height=50)
text.insert(END, lorem.paragraphs(10))
text.pack(fill=BOTH, side=LEFT, expand=True)
win.mainloop()
코드 설명
- ScrolledText(win, width=40, height=50) : 부모 윈도우(win)에 너비 40, 높이 50 크기의 스크롤 가능한 텍스트 위젯을 생성합니다.
- text.insert(END, ...) : 위젯의 맨 끝에 텍스트를 삽입합니다. 예제에서는 lorem_text 라이브러리로 생성한 문단 10개를 삽입했습니다.
- text.pack(fill=BOTH, side=LEFT, expand=True) : 창 크기가 변해도 위젯이 유연하게 늘어나도록 배치합니다.
실행 결과
위 코드를 실행하면 여러 줄의 텍스트가 담긴 Text 위젯이 화면에 나타나며, 오른쪽에 스크롤바가 함께 표시됩니다. 마우스 휠이나 스크롤바를 이용하면 긴 텍스트도 자유롭게 탐색할 수 있습니다.

여기에 wrap 옵션 등을 추가하면 한 줄이 길어질 때 자동으로 줄바꿈되어 더욱 보기 좋은 출력 결과를 얻을 수 있습니다.