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

Tkinter Listbox(리스트박스) 항목 삭제 및 초기화 방법

Tkinter에서 스크롤 가능한 목록 위젯을 만들고 싶다면 Listbox 위젯을 사용하면 됩니다. Listbox 위젯을 활용하면 여러 개의 항목(List Item)으로 구성된 목록을 손쉽게 생성할 수 있으며, 설정에 따라 사용자가 목록에서 하나 또는 여러 개의 항목을 선택할 수도 있습니다.

그렇다면 Listbox에 들어 있는 항목들을 어떻게 지울 수 있을까요? 모든 항목을 한 번에 삭제하려면 delete(0, END) 메서드를 사용하면 됩니다. 또한 전체가 아닌 특정 항목 하나만 삭제하고 싶다면, curselection() 메서드로 현재 선택된 항목을 가져온 뒤 delete() 함수를 호출하여 해당 항목만 제거할 수 있습니다.

예제 코드

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

# tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()

# 윈도우 크기 설정
win.geometry("700x250")

# Listbox 위젯 생성
lb = Listbox(win, width=100, height=5, font=('TkMenuFont', 20))
lb.pack()

# 항목이 삭제된 후 새로운 안내 문구를 표시하는 함수
def delete():
    lb.delete(0, END)
    Label(win, text="Nothing Found Here!",
          font=('TkheadingFont', 20)).pack()

# Listbox에 항목 추가
lb.insert("end", "item1", "item2", "item3", "item4", "item5")

# 항목을 삭제하는 버튼 추가
ttk.Button(win, text="Delete", command=delete).pack()

win.mainloop()

실행 결과

위 코드를 실행하면 Listbox에 여러 개의 항목이 표시되고, 그 아래에 목록을 비울 수 있는 버튼이 함께 나타납니다.

이제 "Delete" 버튼을 클릭해 보세요. Listbox의 모든 항목이 사라지고 "Nothing Found Here!"라는 메시지가 화면에 출력되는 것을 확인할 수 있습니다.

추가 팁: 특정 항목만 삭제하기

전체가 아닌 사용자가 선택한 항목만 삭제하려면 다음과 같이 curselection() 메서드를 활용할 수 있습니다.

def delete_selected():
    selected = lb.curselection()
    for index in reversed(selected):
        lb.delete(index)

이처럼 Tkinter의 Listbox 위젯은 간단한 메서드 호출만으로 목록 전체 또는 개별 항목을 유연하게 관리할 수 있어, 다양한 GUI 프로그램에서 유용하게 활용됩니다.