특정 시스템에서 한 디렉터리의 여러 파일을 선택한 뒤 클립보드로 복사하고, 이를 다른 디렉터리에 한꺼번에 붙여넣어야 하는 상황을 생각해 봅시다. 이처럼 여러 개의 ListBox(리스트박스)에서 각각 선택한 항목을 동시에 유지하려면 exportselection 속성을 활용하면 됩니다.
기본적으로 Tkinter의 Listbox는 다른 위젯에서 새로운 항목을 선택하면 기존의 선택 강조 표시가 해제됩니다. 하지만 exportselection=False로 설정하면, 사용자가 다른 Listbox에서 항목을 선택하더라도 현재 Listbox의 선택 상태가 그대로 유지됩니다.
예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
# Tkinter 프레임 또는 윈도우 인스턴스 생성
win = Tk()
# tkinter 프레임의 크기 설정
win.geometry("750x350")
# listboxA 생성 (선택 상태 유지)
listboxA = Listbox(win, exportselection=False)
listboxA.pack(padx=10, pady=10, fill=BOTH, expand=True)
# listboxB 생성 (선택 상태 유지)
listboxB = Listbox(win, exportselection=False)
listboxB.pack(padx=10, pady=10, fill=BOTH, expand=True)
# listboxA에 항목 추가
listboxA.insert(1, "Python")
listboxA.insert(2, "Java")
listboxA.insert(3, "C++")
listboxA.insert(4, "Rust")
listboxA.insert(5, "GoLang")
# listboxB에 항목 추가
listboxB.insert(1, "C#")
listboxB.insert(2, "JavaScript")
listboxB.insert(3, "R")
listboxB.insert(4, "Php")
win.mainloop()실행 결과
위 코드를 실행하면 두 개의 리스트박스가 포함된 창이 화면에 나타납니다. exportselection=False 옵션 덕분에 한쪽 리스트박스에서 항목을 선택한 후 다른 리스트박스에서 항목을 선택해도, 이전에 선택했던 항목의 강조 표시가 사라지지 않고 그대로 유지됩니다.
이 방식은 파일 관리자처럼 여러 위치의 항목을 동시에 선택해 복사·붙여넣기를 수행해야 하는 애플리케이션을 만들 때 특히 유용합니다.