Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การเลือกหลายรายการพร้อมกันจากสอง Listbox ใน Tkinter

ค่าเริ่มต้นของ Listbox: เมื่อเลือกใน Listbox หนึ่ง Selection ในอีกอันจะหายไป ใช้ exportselection=False เพื่อให้ Selection คงอยู่ได้หลาย Listbox พร้อมกัน

ตัวอย่างโค้ด


from tkinter import *

win = Tk()
win.geometry("750x350")

# exportselection=False = รักษา Selection ไว้
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)

# เพิ่มข้อมูล
for item in ["Python", "Java", "C++", "Rust", "GoLang"]:
    listboxA.insert(END, item)

for item in ["C#", "JavaScript", "R", "Php", "CoffeeScript", "Curl"]:
    listboxB.insert(END, item)

win.mainloop()

คำอธิบาย exportselection

  • True (Default): Selection ถูก Export ไปเป็น X Selection (Primary) → Listbox อื่นจะ Clear Selection
  • False: ไม่ Export Selection → หลาย Listbox มี Selection พร้อมกันได้

โหมดการเลือก (Selectmode)

Modeพฤติกรรม
SINGLEเลือกได้ 1 รายการ
BROWSEเลือกได้ 1 รายการ + Drag เพื่อเลื่อน Selection (Default)
MULTIPLEคลิกเพื่อ Toggle เลือก/ยกเลิก หลายรายการ
EXTENDEDShift+Click = Range, Ctrl+Click = Toggle (Standard)

การดึงรายการที่เลือก


# ดึง index ที่เลือก (tuple)
selected_indices = listbox.curselection()

# ดึงข้อความที่เลือก
selected_items = [listbox.get(i) for i in listbox.curselection()]

# สำหรับ MULTIPLE/EXTENDED
print(listbox.curselection())  # (0, 2, 4)

การประยุกต์ใช้

File Manager (Copy/Move between folders), Email Client (Move messages between folders), Playlist Manager, Tag Selection UI, Any dual-list selector pattern