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

Tkinter Listbox 위젯에 스크롤바 연결하는 방법

Listbox(목록 상자) 위젯은 숫자나 문자 목록처럼 여러 항목을 담는 리스트를 표시하는 데 사용됩니다. 그런데 Listbox로 수백 개에 달하는 긴 항목 목록을 만들어야 한다면 어떻게 해야 할까요? 화면에 다 보이지 않는 나머지 항목까지 모두 확인하려면 적절한 방법이 필요합니다. 이럴 때 스크롤바(Scrollbar)를 Listbox에 연결하면 매우 유용합니다.

스크롤바를 추가하려면 먼저 Listbox(parent, bg, fg, width, height, bd, **options) 생성자를 사용해 Listbox 위젯을 만듭니다. 그다음 Scrollbar(**options) 객체를 생성하여 Listbox와 서로 연동되도록 설정하면 됩니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk

# Tkinter 프레임 인스턴스 생성
win = Tk()

# Tkinter 프레임의 크기 설정
win.geometry("700x350")

# 세로 방향 스크롤바 생성
scrollbar = ttk.Scrollbar(win, orient='vertical')
scrollbar.pack(side=RIGHT, fill=BOTH)

# Listbox 위젯 추가
listbox = Listbox(win, width=350, bg='bisque')
listbox.pack(side=LEFT, fill=BOTH)

# 0부터 99까지의 값을 Listbox에 삽입
for values in range(100):
    listbox.insert(END, values)

# Listbox의 스크롤 동작을 스크롤바와 연결
listbox.config(yscrollcommand=scrollbar.set)
# 스크롤바를 Listbox와 연동하도록 설정
scrollbar.config(command=listbox.yview)

win.mainloop()

코드 설명

위 코드의 핵심은 두 가지 설정입니다. 첫째, yscrollcommand=scrollbar.set 옵션을 통해 Listbox가 스크롤될 때 스크롤바의 위치(썸)가 함께 움직이도록 합니다. 둘째, command=listbox.yview 옵션을 통해 사용자가 스크롤바를 조작할 때 Listbox의 내용이 실제로 스크롤되도록 양방향으로 연결합니다.

실행 결과

위 코드를 실행하면 Listbox 위젯에 여러 항목이 표시된 창이 나타납니다. 창 오른쪽에는 세로 방향 스크롤바가 부착되어 있어, 마우스 휠이나 스크롤바를 이용해 0부터 99까지 모든 항목을 자유롭게 탐색할 수 있습니다.