我有一个tkinter组合框,其中有1000个值。可以使用自动完成搜索功能吗?
就像我在组合框中键入内容一样,它应该执行一些通配符搜索并显示结果。
class ProjectAdmin(admin.ModelAdmin):
form = ProjectAdminForm
答案 0 :(得分:1)
您可以这样尝试
const StyledNavbar = styled(Navbar);
export { StyledNavbar as Navbar };
函数“搜索”在组合框的from tkinter import *
from tkinter import ttk
root = Tk()
def search():
value_to_search = var.get()
if value_to_search == "" or value_to_search == " ":
dim_combo['values'] = element_names
else:
value_to_siplay = []
for value in element_names:
if value_to_search in value:
value_to_siplay.append(value)
dim_combo['values'] = value_to_siplay
element_names = list([str(a) for _ in range(100) for a in range(10)])
dim_combo = ttk.Combobox(root, state='readonly')
dim_combo['values'] = element_names
dim_combo.pack()
var=StringVar()
entry = Entry(root, textvariable=var)
entry.pack()
search_button = Button(root, text="search", command=search)
search_button.pack()
root.mainloop()
内搜索包含要搜索的字符串的元素,因此,如果在框中,我们有element_names
且您搜索{{1 }}复选框仅显示["hello", "mahe", "pola"]
答案 1 :(得分:1)
这是一个很好的解决方案:)
from tkinter import *
from tkinter import ttk
lst = ['C', 'C++', 'Java',
'Python', 'Perl',
'PHP', 'ASP', 'JS']
def check_input(event):
value = event.widget.get()
if value == '':
combo_box['values'] = lst
else:
data = []
for item in lst:
if value.lower() in item.lower():
data.append(item)
combo_box['values'] = data
root = Tk()
# creating Combobox
combo_box = ttk.Combobox(root)
combo_box['values'] = lst
combo_box.bind('<KeyRelease>', check_input)
combo_box.pack()
root.mainloop()
答案 2 :(得分:0)
您可以使用AutocompleteCombobox
模块中的tkentrycomplete
方法。下面的示例可以帮助您。
import tkinter as tk
from tkinter import tkentrycomplete
root = tk.Tk()
box_value = tk.StringVar()
def fun():
print(box_value.get())
combo = tkentrycomplete.AutocompleteCombobox(textvariable=box_value)
test_list = ['apple', 'banana', 'cherry', 'grapes']
combo.set_completion_list(test_list)
combo.place(x=140, y=50)
button = tk.Button(text='but', command=fun)
button.place(x=140,y=70)
root.mainloop()
您可以在link
中找到该模块答案 3 :(得分:0)
我正在使用tk.OptionMenu()小部件在我的代码中实现ComboBox下拉菜单。
使用此小部件,我发现如果在其旁边还包括一个tk.Entry()小部件,并且两个小部件共享相同的textVariable,则tkinter会自动在下拉列表中用作自动搜索。
这是一个简短的片段
selectedItemText = tk.StringVar()
aEntry = tk.Entry(self.master, kw_tkEntry)
aEntry['textvariable'] = selectedItemText
aComboBox = tk.OptionMenu(self.master, selectedItemText, *set(largeDataList))
希望这对某人有帮助