Combobox มาตรฐานไม่มี auto-complete ต้องสร้างเองด้วย Entry + Listbox + bind <KeyRelease>
หลักการ
- Entry widget รับค่าค้นหา
- Listbox แสดงรายการที่กรองได้
- 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 กรองเฉพาะรายการที่ตรง
