Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để tạo một hộp tổ hợp với tính năng tự động hoàn thành trong Tkinter?

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

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

Ví dụ

Trong ví dụ này, chúng tôi sẽ tạo hai hàm như vậy,

  • Hàm kiểm tra (e) sẽ tìm xem mục đã nhập có tồn tại trong danh sách hay không. Nếu mục khớp với từ khóa đã nhập, chúng tôi sẽ cập nhật tiện ích Mục nhập bằng cách chèn dữ liệu cụ thể.
  • Một chức năng cập nhật (dữ liệu) sẽ cập nhật hộp Mục nhập bằng cách chèn giá trị vào tiện ích Mục nhập.
# Import the Required libraries
from tkinter import *
from tkinter import ttk

# Create an instance of tkinter frame or window
win= Tk()

# Set the size of the window
win.geometry("700x350")

# Set the title of the window
win.title("Combobox- TutorialsPoint")

# Update the Entry widget with the selected item in 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):
   # Clear the Combobox
   menu.delete(0, END)
   # Add values to the combobox
   for value in data:
      menu.insert(END,value)


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

# Add a Bottom Label
text= Label(win, text="Select a Programming Language")
text.pack(padx= 15,pady= 20)

# Create an Entry widget
entry= Entry(win, width= 35)
entry.pack()
entry.bind('<KeyRelease>',check)

# Create a Listbox widget to display the list of items
menu= Listbox(win)
menu.pack()

# Create a list of all the menu items
values= ['Python', 'C++', 'Java','Ruby on Rails', 'Rust',
'GoLang','Objective-C', 'C# ', 'PHP', 'Swift', 'JavaScript']

# Add values to our combobox
update(values)

# Binding the combobox onclick

win.mainloop()

Đầu ra

Chạy tập lệnh Python ở trên sẽ hiển thị một cửa sổ có tiện ích Entry và ListBox. Bất cứ khi nào chúng tôi nhập Từ khóa, nó sẽ cập nhật tiện ích ListBox hiển thị kết quả phù hợp với từ khóa đã nhập.

Làm thế nào để tạo một hộp tổ hợp với tính năng tự động hoàn thành trong Tkinter?