본문 바로가기

[Tkinter] 25강 Listbox 위젯으로 목록 선택하기

@도마22026. 2. 2. 18:00
728x90


이 강의는 Tkinter GUI 강의 25강입니다

24강에서는
Spinbox 위젯을 사용해
숫자를 선택하는 입력 방식을 배웠습니다.

이번 강의에서는
여러 항목을 목록 형태로 보여주고 선택하는
Listbox 위젯을 다룹니다.

이번 강의의 목표는 분명합니다.
Listbox의 기본 사용법을 익히고,
선택된 항목을 코드로 처리하는 방법을 이해하는 것입니다.


Listbox 위젯이란 무엇인가

Listbox는
여러 개의 항목을
세로 목록으로 표시하고
그중 하나 또는 여러 개를 선택할 수 있는 위젯입니다.

대표적인 사용 예시는 다음과 같습니다.

  • 파일 목록
  • 항목 선택 메뉴
  • 옵션 리스트
  • 데이터 목록 표시

Listbox의 기본 구조 이해하기

Listbox는
다음 세 가지 개념이 핵심입니다.

  • 항목(item)을 추가한다
  • 사용자가 항목을 선택한다
  • 선택된 항목의 인덱스 또는 값을 가져온다

Listbox의 기본 사용 형태

tk.Listbox(부모)

Listbox는
비어 있는 상태로 생성한 뒤
항목을 하나씩 추가합니다.


가장 기본적인 Listbox 예제

import tkinter as tk

window = tk.Tk()
window.geometry("300x200")

listbox = tk.Listbox(window)
listbox.pack(pady=20)

listbox.insert(tk.END, "사과")
listbox.insert(tk.END, "바나나")
listbox.insert(tk.END, "오렌지")

window.mainloop()

항목은
위에서 아래로
순서대로 추가됩니다.


Listbox 항목의 인덱스 개념

Listbox의 항목은
인덱스 번호로 관리됩니다.

  • 첫 번째 항목 → 0
  • 두 번째 항목 → 1
  • 세 번째 항목 → 2

이 인덱스를 통해
선택 상태를 확인합니다.


선택된 항목의 인덱스 가져오기

선택된 항목의 인덱스는
.curselection()으로 확인합니다.

print(listbox.curselection())

선택된 항목이 없으면
빈 튜플이 반환됩니다.


선택된 항목의 값 가져오기

인덱스를 이용해
실제 항목 값을 가져올 수 있습니다.

index = listbox.curselection()
if index:
    print(listbox.get(index[0]))

Listbox는
여러 개 선택을 지원하기 때문에
항상 튜플 형태로 반환됩니다.


버튼과 함께 선택 항목 출력하기

import tkinter as tk

window = tk.Tk()
window.geometry("300x200")

listbox = tk.Listbox(window)
listbox.pack()

items = ["Python", "Java", "C++", "JavaScript"]
for item in items:
    listbox.insert(tk.END, item)

def show_selection():
    index = listbox.curselection()
    if index:
        print(listbox.get(index[0]))

tk.Button(window, text="선택 확인", command=show_selection).pack(pady=10)

window.mainloop()

버튼을 누르면
현재 선택된 항목이 출력됩니다.


Listbox 선택 모드 이해하기

Listbox는
선택 방식도 설정할 수 있습니다.

tk.Listbox(window, selectmode=tk.SINGLE)

 

  • SINGLE : 하나만 선택
  • MULTIPLE : 여러 개 선택
  • EXTENDED : Shift, Ctrl로 다중 선택

여러 항목 선택 예제

listbox = tk.Listbox(window, selectmode=tk.MULTIPLE)

 

이제
여러 항목을
동시에 선택할 수 있습니다.


선택 이벤트 바로 처리하기

Listbox는
선택이 바뀔 때
이벤트로 처리할 수 있습니다.

def on_select(event):
    index = listbox.curselection()
    if index:
        print(listbox.get(index[0]))

listbox.bind("<<ListboxSelect>>", on_select)

선택할 때마다
함수가 실행됩니다.


Listbox는 언제 사용하면 좋은가

Listbox는
다음과 같은 경우에 적합합니다.

  • 항목 개수가 정해져 있을 때
  • 여러 항목을 한눈에 보여주고 싶을 때
  • 선택 결과가 중요한 경우

항목이 많거나
검색이 필요하다면
다른 위젯과 조합하는 것이 좋습니다.


Listbox 사용 시 주의할 점

Listbox는
스크롤이 기본으로 포함되어 있지 않습니다.

항목이 많아질 경우에는
Scrollbar와 함께 사용하는 것이 일반적입니다.


이번 강의 핵심 정리

이번 강의에서 꼭 기억해야 할 내용입니다.

  • Listbox는 목록 선택용 위젯이다
  • insert()로 항목을 추가한다
  • curselection()으로 선택 인덱스를 가져온다
  • 단일 또는 다중 선택이 가능하다

다음 강의 예고

다음 강의에서는
Listbox 선택 이벤트 처리를 더 깊게 다루고,
Scrollbar와 함께 사용하는 방법을 배웁니다.

이제 Listbox가
실전에서 쓰일 준비가 됩니다.


728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차