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

Tkinter에서 대량의 텍스트를 표시할 때 스크롤 응답 속도를 높이는 방법

Tkinter는 텍스트 파일을 렌더링해 캔버스에 불러오는 용도로도 활용할 수 있습니다. 이렇게 불러온 텍스트 데이터는 조작, 추출, 재가공 등 다양한 후속 작업에 사용할 수 있습니다.

예를 들어 1만 줄이 넘는 쿼리가 담긴 텍스트 파일을 tkinter 캔버스에서 읽어야 한다고 가정해 보겠습니다. 파일을 모두 로드한 뒤 특정 쿼리를 찾으려면 상당한 시간이 걸립니다. 이렇게 방대한 텍스트 파일을 다룰 때는 Y축 스크롤바를 추가하면 응답성을 크게 개선할 수 있습니다. Scrollbar 위젯을 사용하면 화면 측면에 컨트롤러 역할을 하는 위젯을 간단히 만들 수 있습니다.

먼저 open 메서드로 파일을 열어 내용을 읽은 다음, tkinter 프레임의 Y축에 스크롤바를 배치합니다. 스크롤바를 추가하려면 Scrollbar 위젯의 인스턴스를 생성하면 되는데, 이때 윈도우 인스턴스를 매개변수로 전달하고 스크롤바의 위치(side)와 방향(Axis) 같은 속성을 함께 지정합니다.

예제 코드

#노트북에 tkinter 라이브러리 임포트
from tkinter import *

#tkinter 프레임 인스턴스 생성
win = Tk()
win.geometry("700x300")

#Scrollbar 객체 인스턴스 생성 및 속성 정의
scrollbar = Scrollbar(win)
scrollbar.pack(side=RIGHT, fill=Y)
listbox = Listbox(win, height=300, width=100)
listbox.pack()

#open 메서드로 파일을 열고 내용 읽기
file = open('file.txt', 'r').readlines()

for i in file:
    listbox.insert(END, i)

#위젯 속성 정의
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)

#종료 버튼이 눌릴 때까지 캔버스 표시
mainloop()

실행 결과

위 코드를 실행하면 캔버스 오른쪽에 스크롤바가 부착된 창이 열리고, 대용량 파일의 내용도 끊김 없이 빠르게 탐색할 수 있습니다.

Tkinter에서 대량의 텍스트를 표시할 때 스크롤 응답 속도를 높이는 방법