파이썬 GUI_7_리스트 박스 항목 삭제
*본 코드는 PC(윈도)에서도 동작합니다.
[목표] 리스트 박스에 아이템(항목) 관리 삭제하기
이 전 게시물에서 다음과 같이 리스트 박스에 항목을 추가해 보았습니다.
[복습] 레이블에 입력한 항목을 리스트 박스에 추가하기
다음 코드를 통해 레이블에 입력한 문자열을 리스트 박스에 추가할 수 있습니다.
from tkinter import * root = Tk() root.title("GUI프로그래밍") root.geometry("320x200") lbox = Listbox(root, selectmode="extended", height=0) lbox.insert(0,"라이언") lbox.insert(1,"프로도") lbox.insert(2,"무지") lbox.insert(END,"네오") lbox.pack() ent = Entry(root, width=20) ent.pack() def btnist(): lbox.insert(END,ent.get()) btn1 = Button(root, text="추가", command=btnist) btn1.pack() root.mainloop() |
![]() |
![]() |
이번에는 리스트 박스 항목을 삭제해 보겠습니다.
1. 리스트 박스에 삭제 버튼 만들기(맨 아래 항목 삭제하기)
위 코드에 음영 표시한 코드 네 줄을 추가하면 삭제 버튼이 표시되고 동작합니다.
from tkinter import * ---중간 코드 생략--- def btnist(): lbox.insert(END,ent.get()) def btndlt(): lbox.delete(END) #END자리에 0을 넣으면 맨 위 항목 삭제함 btn1 = Button(root, text="추가", command=btnist) btn1.pack() btn2 = Button(root, text="삭제", command=btndlt) btn2.pack() root.mainloop() |
![]() |
[코드 설명]
추가 코드 3~4행: 리스트 박스 항목을 삭제하기 위한 '삭제' 버튼을 표시합니다.
추가 코드 1~2행: 삭제 버튼 클릭시 동작할 함수 btndlt()의 기능을 정의합니다.
delete(END)는 리스트 박스의 항목 중 END(맨 아랫쪽) 위치에 있는 항목을 삭제합니다.
삭제 버튼을 클릭해 보세요. 네오, 무지, 프로도...순으로 항목이 삭제됩니다.
[해보기]
END 대신에 0을 넣고 실행해 보세요.
2. 삭제 버튼 클릭 시 선택한 항목 삭제하기
이런 상황을 가정해 봅시다.
"삭제하고 싶은 항목이 맨 위 또는 아래가 아니라 한 중간에 있다면?"
이에 대한 해결책도 물론 있습니다.
원하는 항목을 클릭한 뒤 삭제해 보겠습니다.
아래 처럼 위 코드에서 한 줄만 수정해 보세요. ( * 취소선 표시된 코드를 삭제하고 음영 표시한 코드로 대체하세요.)
from tkinter import * ---중간 코드 생략--- def btnist(): lbox.insert(END,ent.get()) def btndlt(): btn1 = Button(root, text="추가", command=btnist) btn1.pack() btn2 = Button(root, text="삭제", command=btndlt) btn2.pack() root.mainloop() |
![]() |
수정한 코드 중
curselection()메서드는 선택(클릭)한 항목의 인덱스(위치)값을 가져옮니다.
예를 들어,
오른쪽 그림처럼 "프로도"를 선택하면 curselection()는 "프로도"가 자리한 인덱스(위치)값 1을 가져옵니다.
따라서 lbox.delete(1)의 결과로 "프로도"가 삭제됩니다.
[해보기]
프로그램 실행 후 아래와 같이 실습해 보세요.
-2개 이상 항목을 선택하고 삭제 버튼을 클릭해 보세요.