你先研究着,我也还在想修改的办法,如果改成功了会告诉你
okey qq1151985918 发表于 2021-1-8 12:27
你先研究着,我也还在想修改的办法,如果改成功了会告诉你
下面这个是用entry跟listbox也可以实现模糊匹配
import tkinter as tk
def on_keyrelease(event):
# get text from entry
value = event.widget.get()
value = value.strip().lower()
# get data from test_list
if value == '':
data = test_list
else:
data = []
for item in test_list:
if value in item.lower():
data.append(item)
# update data in listbox
listbox_update(data)
def listbox_update(data):
# delete previous data
listbox.delete(0, 'end')
# sorting data
data = sorted(data, key=str.lower)
# put new data
for item in data:
listbox.insert('end', item)
def on_select(event):
# display element selected on list
print('(event) previous:', event.widget.get('active'))
print('(event)current:', event.widget.get(event.widget.curselection()))
print('---')
# --- main ---
test_list = ('690-1G150', '690-1G151', '699-1G151', '900-1G180', '699-1G180')
root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
entry.bind('<KeyRelease>', on_keyrelease)
listbox = tk.Listbox(root)
listbox.pack()
# listbox.bind('<Double-Button-1>', on_select)
listbox.bind('<<ListboxSelect>>', on_select)
listbox_update(test_list)
root.mainloop()
lengyue869 发表于 2021-1-8 13:36
下面这个是用entry跟listbox也可以实现模糊匹配
这个我想过,难度比你找到的小很多。 qq1151985918 发表于 2021-1-8 13:42
这个我想过,难度比你找到的小很多。
代码贴我看看呗 lengyue869 发表于 2021-1-8 14:05
代码贴我看看呗
等我给你敲一下代码 lengyue869 发表于 2021-1-8 14:05
代码贴我看看呗
敲完代码发现是跟你后贴的一样的 lengyue869 发表于 2021-1-8 14:05
代码贴我看看呗
import tkinter
def newlistbox(oldlist):
gettext = entry.get()
newlist = sorted(oldlist, key=str.lower)
listbox.delete(0, 'end')
for each in newlist:
if gettext in each:
listbox.insert('end', each)
listbox.selection_set(0)
listbox.bind('<<ListboxSelect>>', newtext)
def newtext(event):
v = event.widget.curselection()
text = event.widget.get(v)
entry.delete(0, 'end')
entry.insert(0, text )
def textchange(event):
newlist = []
gettext = event.widget.get().strip().lower()
if event.keysym:
if gettext:
for each in testlist:
if gettext in each.lower():
newlist.append(each)
else:
newlist = testlist
newlistbox(newlist)
root = tkinter.Tk()
entry = tkinter.Entry(root)
listbox = tkinter.Listbox(root)
entry.bind('<KeyRelease>', textchange)
entry.grid(row=0, column=0)
listbox.grid(row=1, column=0)
testlist = ('apple', 'banana', 'Cranberry',
'dogwood', 'alpha', 'Acorn',
'Anise', 'Strawberry' )
newlistbox(testlist)
root.mainloop()
qq1151985918 发表于 2021-1-8 15:46
{:5_109:}{:5_109:}{:5_109:} lengyue869 发表于 2021-1-8 15:48
所以我问你 怎么做到的输入文字能显示下拉列表,如果Combobox有一个textchange事件或者能够实现的话,就能够做到模糊匹配了 qq1151985918 发表于 2021-1-8 15:51
所以我问你 怎么做到的输入文字能显示下拉列表,如果Combobox有一个textchange事件或者能够实现的话,就 ...
Combobox不行的話就用entry+listbox吧,能達到效果就可以了 lengyue869 发表于 2021-1-8 15:52
Combobox不行的話就用entry+listbox吧,能達到效果就可以了
嗯嗯
页:
1
[2]