특정 시스템에서 한 디렉터리의 여러 파일을 선택한 뒤 클립보드로 복사하고, 이를 다른 디렉터리에 붙여넣어야 하는 상황을 생각해 볼 수 있습니다. 이처럼 여러 개의 목록 상자(Listbox)에서 선택 상태를 동시에 유지하려면 exportselection 속성을 활용하면 됩니다.
기본적으로 Tkinter의 Listbox 위젯은 다른 위젯에서 새 항목을 선택하는 순간 기존의 선택이 자동으로 해제됩니다. exportselection 속성은 이러한 동작을 제어하는 옵션으로, 이 값을 False로 설정하면 다른 ListBox에서 항목을 선택하더라도 기존 선택 항목이 사라지지 않습니다. 따라서 두 개 이상의 Listbox에서 각각 선택한 항목을 동시에 유지할 수 있습니다.
예제 코드
#Tkinter 라이브러리 임포트
from tkinter import *
#Tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
#윈도우 크기 설정
win.geometry("750x350")
#Listbox 생성 (exportselection=False로 선택 상태 유지)
listboxA = Listbox(win, exportselection=False)
listboxA.pack(padx=10, pady=10, fill=BOTH, expand=True)
listboxB = Listbox(win, exportselection=False)
listboxB.pack(padx=10, pady=10, fill=BOTH, expand=True)
#Listbox A에 항목 추가
listboxA.insert(1, "1.Python")
listboxA.insert(2, "2.Java")
listboxA.insert(3, "3.C++")
listboxA.insert(4, "4.Rust")
listboxA.insert(5, "5.GoLang")
#Listbox B에 항목 추가
listboxB.insert(1, "a.C#")
listboxB.insert(2, "b.JavaScript")
listboxB.insert(3, "c.R")
listboxB.insert(4, "d.Php")
listboxB.insert(5, "e.CoffeeScript")
listboxB.insert(6, "f.Curl")
win.mainloop()실행 결과
위 코드를 실행하면 두 개의 목록 상자가 나란히 배치된 윈도우가 표시됩니다. exportselection=False가 적용되었기 때문에 한쪽 Listbox에서 항목을 선택한 후 다른 쪽 Listbox에서 항목을 선택해도 이전 선택이 해제되지 않으며, 두 목록 상자에서 선택한 항목들이 동시에 유지됩니다.
참고: 한 목록 상자 안에서 여러 항목 선택하기
단일 Listbox 내부에서 여러 항목을 선택하고 싶다면 selectmode 옵션을 함께 사용할 수 있습니다. selectmode="multiple"은 Ctrl 키 없이 클릭만으로 여러 항목을 선택할 수 있게 해주고, selectmode="extended"는 Ctrl 또는 Shift 키를 이용한 범위 선택을 지원합니다. 이 옵션들을 exportselection=False와 조합하면 더욱 유연한 다중 선택 UI를 구현할 수 있습니다.