Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách tạo combo box có tự động hoàn thành trong Tkinter

Widget Tkinter Combobox là một trong những widget hữu ích triển khai menu thả xuống trong ứng dụng. Nó dùng kết hợp widget Entry và ListBox ở trên cùng. Ta chọn mục Menu bằng cách gõ tên mục (nếu tồn tại trong Danh sách Menu) trong trường Entry. Tuy nhiên, đôi khi có trường hợp cần dùng tự động hoàn thành để chọn mục menu.

Để tạo Combobox tự động hoàn thành, ta tạo Listbox trước liệt kê menu và widget Entry hiển thị mục Menu được chọn. Bạn gán sự kiện "Keyrelease" với widget entry tìm từ khóa trong danh sách. Nếu mục tồn tại, ta cập nhật widget Listbox.

Ví dụ

Trong ví dụ này, ta tạo hai hàm:

  • Hàm check(e) tìm mục nhập có tồn tại trong danh sách không. Nếu khớp từ khóa nhập, ta cập nhật widget Entry chèn dữ liệu cụ thể.
  • Hàm update(data) cập nhật Entry box bằng cách chèn giá trị vào widget Entry.
# Import thư viện cần thiết
from tkinter import *
from tkinter import ttk

# Tạo instance của frame hoặc cửa sổ tkinter
win = Tk()

# Đặt kích thước cửa sổ
win.geometry("700x350")

# Đặt tiêu đề cửa sổ
win.title("Combobox- TutorialsPoint")

# Cập nhật Entry widget với mục chọn trong list
def check(e):
    v = entry.get()
    if v == '':
        data = values
    else:
        data = []
        for item in values:
            if v.lower() in item.lower():
                data.append(item)
    update(data)

def update(data):
    # Xóa Combobox
    menu.delete(0, END)
    # Thêm giá trị vào combobox
    for value in data:
        menu.insert(END, value)

# Thêm widget Label
label = Label(win, text="Demo Combobox Widget",
              font=('Helvetica 15 bold'), background="green3")
label.pack(padx=10, pady=25)

# Thêm văn bản Label dưới
text = Label(win, text="Select a Programming Language")
text.pack(padx=15, pady=20)

# Tạo widget Entry
entry = Entry(win, width=35)
entry.pack()
entry.bind('', check)

# Tạo widget Listbox hiển thị danh sách mục
menu = Listbox(win)
menu.pack()

# Tạo danh sách tất cả mục menu
values = ['Python', 'C++', 'Java', 'Ruby on Rails', 'Rust', 'GoLang',
          'Objective-C', 'C#', 'PHP', 'Swift', 'JavaScript']

# Thêm giá trị vào combobox
update(values)

# Gán sự kiện click combobox
win.mainloop()

Kết quả

Chạy script Python trên sẽ hiển thị cửa sổ với widget Entry và ListBox. Khi nhập từ khóa, nó cập nhật ListBox hiển thị kết quả khớp từ khóa.

Cách tạo combo box có tự động hoàn thành trong Tkinter