如何在 tkinter 中创建组合框数组?

How to create Combobox array in tkinter?

我有一个输入 n=5,那么我可以创建 5 个 Combobox 并将它们组合在一起形成类似数组的东西吗? 我只想通过其索引 i 获取每个 Combobox 的值,就像 box[i].get().

请帮我解决这个问题!

组合框是列表框和输入字段的组合。它是 Tkinter 小部件之一,其中包含从选项列表指向 select 的向下箭头。它可以帮助用户根据显示的选项列表 select。当用户单击输入字段上的下拉箭头时,滚动列表框的弹出窗口将显示在输入字段下方。只有当列表框中的选项被 selected 时,selected 选项才会显示在输入字段中。

语法:

combobox = ttk.Combobox(master, option=value, ...)

这是您可以执行的操作。

from tkinter import *
from tkinter import ttk
x=int(input("Enter number of Comboboxes: "))
root=Tk()
box_dict={}
def change_icon( event, j):
    print("-------------------------")
    
    print ("Value: ",box_dict[j].get(),f"at Combobox: {box_dict[j]}")
for i in range(x):
    
    Label(root,text=f"Combobox Number: {i}").pack()
    box=ttk.Combobox(root,state="readonly",values=['1','2','3','4'])
    box_dict[i] = box
    box.pack()
    box.bind("<<ComboboxSelected>>",lambda event, j=i: change_icon(event, j))

root.mainloop()

您可以使用列表框小部件 combobox.Below 是 python Tkinter 中自动完成组合框的示例。

def checkkey(event):
   
value = event.widget.get()
print(value)
  
# get data from l
if value == '':
    data = l
else:
    data = []
    for item in l:
        if value.lower() in item.lower():
            data.append(item)
update(data)
def update(data):
  
# clear previous data
lb.delete(0, 'end')

# put new data
for item in data:
    lb.insert('end', item)
l = ('C','C++','Java',
 'Python','Perl',
 'PHP','ASP','JS' )
root = Tk()


e = Entry(root)
e.pack()
e.bind('<KeyRelease>', checkkey)


lb = Listbox(root)
lb.pack()
update(l)

root.mainloop()