Listbox เป็นวิดเจ็ตสําหรับเลือกรายการอีกรูปแบบหนึ่ง ซึ่งจะแสดงให้เห็นและเลือก พร้อมกันได้มากกว่า 1 รายการ
Listbox มีออปชันและเมธอดพื้นฐานเช่นเดียวกับวิดเจ็ตทั่วไป และนอกเหนือ จากนั้น ยังมีออปชั่นเฉพาะตัว หรือ
เหมือนกับวิดเจ็ตอื่นที่มีลักษณะคล้ายกัน ซึ่งอันที่ น่าสนใจคือ
โค้ดที่ใช้รัน
โค้ด: เลือกทั้งหมด
from tkinter import *
window = Tk()
window.geometry('470x200')
window.option_add('*font', 'tahoma 11')
#--- Frame 1 + Listbox 1 + Scrollbar ---------------------------
fm_lbx1 = Frame(window)
fm_lbx1.pack(side=LEFT, padx=10, pady=10)
lbx1 = Listbox(fm_lbx1, height=8, width=15, selectmode=MULTIPLE)
langs = ['PHP', 'Java', 'Python', 'Swift', 'C#', 'Visual Basic', 'JavaScript', 'SQL', 'HTML', 'CSS']
lbx1.insert(0, *langs)
lbx1.grid(row=0, column=0)
scroll_y = Scrollbar(fm_lbx1, orient=VERTICAL, command=lbx1.yview)
scroll_y.grid(row=0, column=1, sticky=N+S)
lbx1.config(yscrollcommand=scroll_y.set)
#--- Button ----------------------------------------------
button = Button(text='หยิบใส่รถเข็น >>', bg='lightgray', command=lambda: button_click())
button.pack(side=LEFT, padx=10, pady=10)
#--- Frame 2 + Listbox 2 + Scrollbar --------------------
fm_lbx2 = Frame(window)
fm_lbx2.pack(side=LEFT, padx=10, pady=10)
lbx2 = Listbox(fm_lbx2, height=8, width=15)
lbx2.grid(row=0, column=0)
scroll_y = Scrollbar(fm_lbx2, orient=VERTICAL, command=lbx2.yview)
scroll_y.grid(row=0, column=1, sticky=N+S)
lbx2.config(yscrollcommand=scroll_y.set)
def button_click():
indices = lbx1.curselection() #ลำดับทั้งหมดที่เลือกใน Listbox 1
lbx2_items = lbx2.get(0, END) #รายการทั้งหมดของ Listbox 2
#เนื่องจากเรามีข้อกำหนดว่า จะไม่เพิ่มรายการซ้ำกับที่มีอยู่แล้ว
#ดังนั้นจะต้องนำแต่ละรายการที่เลือกใน Listbox1
#ไปตรวจสอบว่าซ้ำกับรายการใดใน Listbox2 หรือไม่ ถ้าไม่ซ้ำจึงจะเพิ่มลงไป
for i in indices:
item = lbx1.get(i)
if item not in lbx2_items:
lbx2.insert(END, item)
mainloop()
ประกอบด้วย Listbox จํานวน 2 อัน พร้อมด้วย Button โดยอันแรกจะแสดง รายการตัวเลือกทั้งหมดที่มี
และเมื่อคลิก Button จะนํารายการที่ถูกเลือกใน Listbox อันแรก ไปเพิ่มลงใน Listbox อันที่สอง แต่มี
ข้อแม้ว่า ต้องไม่ซ้ำกับรายการเดิมที่อยู่แล้วใน Listbox อันที่สอง
ช่องทางศึกษาเพิ่มเติม
เทคนิคการเขียน Python
บทเรียน Python
Programming - C/C++ & java & Python
บทเรียน Python GUI
บทเรียน Python Framework Flask