การใช้งาน Python GUI (Tkinter) : การสร้าง Listbox เพื่อเพิ่ม เลือกรายการที่ต้องการ

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderators: mindphp, ผู้ดูแลกระดาน

ธวัชชัย แสนหาญ
PHP Super Member
PHP Super Member
Posts: 499
Joined: 15/11/2018 10:02 am

การใช้งาน Python GUI (Tkinter) : การสร้าง Listbox เพื่อเพิ่ม เลือกรายการที่ต้องการ

Post by ธวัชชัย แสนหาญ » 26/02/2019 6:51 pm

การใช้งาน Python GUI (Tkinter) : การสร้าง Listbox เพื่อเพิ่ม เลือกรายการที่ต้องการ

Listbox เป็นวิดเจ็ตสําหรับเลือกรายการอีกรูปแบบหนึ่ง ซึ่งจะแสดงให้เห็นและเลือก พร้อมกันได้มากกว่า 1 รายการ
Listbox มีออปชันและเมธอดพื้นฐานเช่นเดียวกับวิดเจ็ตทั่วไป และนอกเหนือ จากนั้น ยังมีออปชั่นเฉพาะตัว หรือ
เหมือนกับวิดเจ็ตอื่นที่มีลักษณะคล้ายกัน ซึ่งอันที่ น่าสนใจคือ

โค้ดที่ใช้รัน

Code: Select all

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()
รูปการรันโปรแกรม
454.JPG
454.JPG (27.38 KiB) Viewed 1170 times
สรุป
ประกอบด้วย Listbox จํานวน 2 อัน พร้อมด้วย Button โดยอันแรกจะแสดง รายการตัวเลือกทั้งหมดที่มี
และเมื่อคลิก Button จะนํารายการที่ถูกเลือกใน Listbox อันแรก ไปเพิ่มลงใน Listbox อันที่สอง แต่มี
ข้อแม้ว่า ต้องไม่ซ้ำกับรายการเดิมที่อยู่แล้วใน Listbox อันที่สอง

ช่องทางศึกษาเพิ่มเติม :baa:
เทคนิคการเขียน Python
บทเรียน Python
Programming - C/C++ & java & Python
บทเรียน Python GUI
บทเรียน Python Framework Flask

Return to “Python Knowledge”

Users browsing this forum: No registered users and 24 guests