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

จะสร้างกล่องคำสั่งผสมด้วยการเติมข้อความอัตโนมัติใน Tkinter ได้อย่างไร?


วิดเจ็ต Tkinter Combobox เป็นหนึ่งในวิดเจ็ตที่มีประโยชน์ในการปรับใช้เมนูดรอปดาวน์ในแอปพลิเคชัน มันใช้การรวมกันของวิดเจ็ตรายการและวิดเจ็ตกล่องรายการที่ด้านบน เราสามารถเลือกรายการเมนูโดยพิมพ์ชื่อรายการ (ถ้ามีอยู่ในรายการเมนู) ในช่องรายการ อย่างไรก็ตาม บางครั้ง อาจมีบางกรณีที่เราต้องการใช้การเติมข้อความอัตโนมัติเพื่อเลือกรายการเมนู

ในการสร้าง Combobox ที่เติมข้อความอัตโนมัติ เราจะสร้างกล่องรายการก่อนเพื่อแสดงรายการเมนูและวิดเจ็ตรายการเพื่อแสดงเมนูที่เลือก คุณสามารถผูกเหตุการณ์ "Keyrelease" กับวิดเจ็ตรายการเพื่อค้นหาคีย์เวิร์ดเฉพาะในรายการ หากมีรายการอยู่ เราจะอัปเดตวิดเจ็ตกล่องรายการ

ตัวอย่าง

ในตัวอย่างนี้ เราจะสร้างสองฟังก์ชันดังกล่าว

  • ฟังก์ชัน check(e) จะพบว่ารายการที่ป้อนมีอยู่ในรายการหรือไม่ หากรายการตรงกับคีย์เวิร์ดที่ป้อน เราจะอัปเดตวิดเจ็ตรายการโดยแทรกข้อมูลเฉพาะ
  • ฟังก์ชัน อัปเดต (ข้อมูล) จะอัปเดตช่องรายการโดยใส่ค่าลงในวิดเจ็ตรายการ
# 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()

ผลลัพธ์

การเรียกใช้สคริปต์ Python ด้านบนจะแสดงหน้าต่างพร้อมวิดเจ็ตรายการและกล่องรายการ เมื่อใดก็ตามที่เราป้อนคำหลัก มันจะอัปเดตวิดเจ็ตกล่องรายการซึ่งแสดงผลลัพธ์ที่ตรงกับคำหลักที่ป้อน

จะสร้างกล่องคำสั่งผสมด้วยการเติมข้อความอัตโนมัติใน Tkinter ได้อย่างไร?