Ttkinter模块下拉菜单在不选择时怎么自动收回: 做了一个模糊查询的模块,目前可以实现查询到匹配的选择,但是现在有个问题是,匹配到了之后,如果我不选择下拉菜单的内容,这个下拉菜单就一直显示。
想实现的功能:比如:我输入cq,匹配出了cqs,但是我不选择,直接点目的地,匹配的下拉菜单就自动收回
def text_change(event,result):
current = text1.get()
current_value = event.char
# \x08就是 删除按钮
if current_value == '\x08':
current = current[:-1]
else:
current += current_value
if current.strip()!= "":
handlerResult(current,result)
else:
# place_forget隐藏控件
LB1.place_forget()
def handlerResult(current,result):
# LB1.place()
print("-----------------------------")
LB1.delete(0, END)
result1=list(set(result ))
for i in result1:
# 总数据中包含输入框中的内容 这里根据你的总数据自己设置
if current in i[2]:
LB1.insert(END,i[2]+","+i[0]+","+str(i[1]))
LB1.place(x=50, y=50)
def send(event):
# 将双击列表后的文字显示到输入框上
text1.delete(0, END)
print(LB1.curselection())
text1.insert(0, str(LB1.get(LB1.curselection())))
print(LB1.get(LB1.curselection()))
# 隐藏列表
LB1.delete(0, END)
LB1.place_forget()
def handlerAdaptor(fun, *args):
return lambda event, fun=fun, kwds=args: fun(event, *args)
root = Tk()
# 设置窗体标题
root.title('快递价格')
# 设置窗口大小和位置
root.geometry('1000x400+570+200')
LB1 = Listbox(root, height=7)
label1 = Label(root, text='发出地:')
label2 = Label(root, text='目的地:')
text1 = Entry(root, bg='white', width=20)
text2 = Entry(root, bg='white', width=20)
# 实时监听内容发生变化 **results**为我们的总数据
#text1.bind('<Key>', handlerAdaptor(text_change,result))
text1.bind('<Key>', lambda event:text_change(event,result))
# 列表
LB1 = Listbox(root, height=7)
LB1.bind('<ButtonRelease-1>', send)
label1.place(x=5, y=30)
text1.place(x=50, y=30)
label2.place(x=205,y=30)
text2.place(x=250, y=30)
root.mainloop()