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

สร้าง Combo Box แบบ Auto-complete ใน Tkinter

Combobox มาตรฐานไม่มี auto-complete ต้องสร้างเองด้วย Entry + Listbox + bind <KeyRelease>

หลักการ

  1. Entry widget รับค่าค้นหา
  2. Listbox แสดงรายการที่กรองได้
  3. bind KeyRelease → ฟังก์ชัน filter รายการ → อัปเดต Listbox

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

from tkinter import *
from tkinter import ttk

win = Tk()
win.geometry("700x350")
win.title("Combobox - TutorialsPoint")

values = ['Python', 'C++', 'Java', 'Ruby on Rails', 'Rust', 'GoLang',
          'Objective-C', 'C#', 'PHP', 'Swift', 'JavaScript']

def check(e):
    v = entry.get()
    if v == '':
        data = values
    else:
        data = [item for item in values if v.lower() in item.lower()]
    update(data)

def update(data):
    menu.delete(0, END)
    for value in data:
        menu.insert(END, value)

Label(win, text="Demo Combobox Widget", font=('Helvetica 15 bold'), background="green3").pack(padx=10, pady=25)
Label(win, text="Select a Programming Language").pack(padx=15, pady=20)

entry = Entry(win, width=35)
entry.pack()
entry.bind('', check)

menu = Listbox(win)
menu.pack()

update(values)

win.mainloop()

ผลลัพธ์

พิมพ์ใน Entry → Listbox กรองเฉพาะรายการที่ตรง

สร้าง Combo Box แบบ Auto-complete ใน Tkinter